关键字: 镜像 images 镜像名 image_name 镜像id image_id 容器 container 容器名 con_name 容器id con_id 启动docker systemctl start docker 搜索docker镜像 docker search image_name (例如mysql nginx redis) 从公网拉取一个镜像 docker pull images_name 查看已有的docker镜像 [root@docker ~]# docker images 查看帮助 docker command --help 查看镜像列表 docker search nginx 启动一个容器 #基于hello-world镜像启动一个容器,如果本地没有镜像会从公网拉取过来,这次做为测试用 docker run hello-world docker save和docker export的区别: docker save保存的是镜像(image),docker export保存的是容器(container); docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像; docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。 导出镜像 docker save -o image_name.tar image_name 导入镜像 1:docker load < image_name.tar ducker只支持tar类型 2:cat alibaba-rocketmq-3.2.6.tar.gz | docker import - rocketmq:3.2.6(镜像名自己定义) 注意镜像文件必须是tar.gz类型的文件 删除镜像 docker rmi image_name 启动一个容器 docker run --name=con_name images --name #设置容器名 基于创建好的容器自定义docker镜像 docker commit -m "con_name" con_id image_name 创建一个容器的同时进入这个容器 docker run -it --name=con_name images -it #在启动之后进入这个容器 创建一个容器,放入后台运行 docker run -d --name=con_name images 创建一个容器,放入后台运行,把物理机80端口映射到容器的80端口 docker run -d -p 81:80 image_name #-p 参数说明 -p hostPort:containerPort -p ip:hostPort:containerPort -p ip::containerPort -p hostPort:containerPort:udp 看容器的端口映射情况 docker port con_id 查看正在运行的容器 docker ps 查看所有的容器 docker ps -a 动态查看容器日志 docker logs -f con_name 进入容器 docker attach con_name (使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作;该命令生产环境尽量少用或者别用) docker exec -it con_name /bin/bash(解释器) docker inspect -f {{.State.Pid}} con_name nsenter --target 容器PID --mount --uts --ipc --net --pid (nsenter可以访问另一个进程的名称空间。所以为了连接到某个容器我们还需要获取该容器的第一个进程的PID。可以使用docker inspect命令来拿到该PID) 退出容器 主要针对docker attach con_name 进入 # 方法一 exit # 方法二 ctrl+p && ctrl+q (一起按,注意顺序,退出后容器依然保持启动状态) 删除容器 docker rm con_name #强制删除需要加-f,不加-f不能删除正在运行中的容器,非常危险,最好不用 拷贝文件 docker cp #从容器里面拷文件到宿主机 docker cp project:/opt/cdc.txt /home/ docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径 #从宿主机拷文件到容器里面 docker cp /home/ccc.txt project:/opt/ docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径 (需要注意的是,不管容器有没有启动,拷贝命令都会生效。如果拷贝的内容有重复,会直接覆盖,不会询问) 查看docker网络 [root@docker ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 3f91f2097286 bridge bridge local d7675dbd247c docker_gwbridge bridge local 5b36c7e947fd host host local ims6qkpikafu ingress overlay swarm 85ba10e7ef79 none null local 创建一个docker网络my-docker docker network create -d bridge \ --subnet=192.168.0.0/24 \ --gateway=192.168.0.100 \ --ip-range=192.168.0.0/24 \ my-docker 利用刚才创建的网络启动一个容器 #docker run --network=my-docker --ip=192.168.0.5 -itd --name=con_name -h lb01 image_name --network #指定容器网络 --ip #设定容器ip地址 -h #给容器设置主机名 查看容器pid #方法一: docker top con_name #方法二: docker inspect --format "{{.State.Pid}}" con_name 过滤查看mac和ip地址 docker inspect -f '{{.NetworkSettings.MacAddress}}' con_name docker inspect -f '{{.NetworkSettings.IPAddress}}' con_name 运行dockerfile并给dockerfile创建的镜像建立名字 docker build -t mysql:3.6.34 `pwd` mariadb容器启动前需先设置密码方法 docker run -d -P -e MYSQL_ROOT_PASSWORD=password img_id docker修改镜像名 docker tag imageid name:tag 进入docker容器脚本 [root@docker ~]# cat nsenter.sh PID=`docker inspect --format "{{.State.Pid}}" $1` nsenter -t $PID -u --mount -i -n -p 创建一个网络 docker network create --driver bridge --subnet 172.22.16.0/24 --gateway 172.22.16.1 my_net2 将容器添加到my_net2网络 connect docker network connect my_net2 oldboy1 docker日志模块 使用filebeat收集日志 { "registry-mirrors": ["https://56px195b.mirror.aliyuncs.com"], "cluster-store":"consul://192.168.56.13:8500", "cluster-advertise": "192.168.56.11:2375", "log-driver": "fluentd", "log-opts": { "fluentd-address":"192.168.56.13:24224", "tag":"linux-node1.example.com" } } Docker最佳实践-部署LNMP环境 http://www.cnblogs.com/Csir/p/6888066.html