前面的推文我们学了Docker容器镜像知识今天开始给大家分享Docker容器操作的常用命令欢迎关注。Docker不管是程序员架构师或者测试工程师都必须要掌握的一门主流技术如果需要领取同步资料可以文末联系老师。一、启动容器使用start命令来启动一个已经创建的容器语法如下docker start [OPTIONS] CONTAINER [CONTAINER...]例如:[rootlocalhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cf7d5ab01367 chuanshi/my_tomcat:1.1 catalina.sh run 2 days ago Exited (143) 2 days ago sharp_morse c86203e18883 tomcat catalina.sh run 2 days ago Exited (143) 2 days ago evil_brown[rootlocalhost ~]# docker start cf7d5ab01367二、重启容器使用restart命令可以重启容器语法格式如下docker restart [OPTIONS] CONTAINER [CONTAINER...]如果由于某种错误而导致容器停止运行那么可以通过--restart标志让Docker自动重新启动该容器--restart标志会检查容器的退出代码并据些来决定是否要重启容器默认情况下Docker不会重启容器。[rootlocalhost ~]# docker run --restartalways redis /bin/bash--restart标志设置为always无论容器退出代码是什么Docker都会自动重启该容器。三、创建并运行容器除了创建容器后通过start命令来启动也可以直接新建并启动容器。所需要的命令主要为docker[container] run等价于先执行docker [container] create命令再docker [container] start命令。run命令的语法格式如下​​​​​​​docker run [OPTIONS] IMAGE [COMMAND] [ARG...] OPTIONS说明 -a stdin: 指定标准输入输出内容类型可选 STDIN/STDOUT/STDERR 三项 -d: 后台运行容器并返回容器ID -i: 以交互模式运行容器通常与 -t 同时使用 -P: 随机端口映射容器内部端口随机映射到主机的端口 -p: 指定端口映射格式为主机(宿主)端口:容器端口 -t: 为容器重新分配一个伪输入终端通常与 -i 同时使用 --namenginx-lb: 为容器指定一个名称 --dns 8.8.8.8: 指定容器使用的DNS服务器默认和宿主一致 --dns-search example.com: 指定容器DNS搜索域名默认和宿主一致 -h mars: 指定容器的hostname -e usernameritchie: 设置环境变量 --env-file[]: 从指定文件读入环境变量 --cpuset0-2 or --cpuset0,1,2: 绑定容器到指定CPU运行 -m :设置容器使用内存最大值 --netbridge: 指定容器的网络连接类型支持 bridge/host/none/container: 四种类型 --link[]: 添加链接到另一个容器 --expose[]: 开放一个端口或一组端口 --volume , -v: 绑定一个卷rootlocalhost ~]# docker run -it --name redis_v1.0 a6edd7a55846 1:C 16 Sep 2021 14:56:45.482 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 1:C 16 Sep 2021 14:56:45.482 # Redis version6.2.5, bits64, commit00000000, modified0, pid1, just started 1:C 16 Sep 2021 14:56:45.482 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf 1:M 16 Sep 2021 14:56:45.482 # You requested maxclients of 10000 requiring at least 10032 max file descriptors. 1:M 16 Sep 2021 14:56:45.482 # Server cant set maximum open files to 10032 because of OS error: Operation not permitted.上面是交互式运行的容器(interactive container)也可以创建长期运行的容器守护式容器(daemonized container)没有交互式传话非常适合运行应用程序和服务-d参数是用于将容器放在后台运行。​​​​​​​[rootlocalhost ~]# docker run -d --name redis_v1.0 a6edd7a55846 924be00ba9f8bbd1b748a64ed277ac5e7f636e86d8c70e14cc4ecce895442128 [rootlocalhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 924be00ba9f8 a6edd7a55846 docker-entrypoint.s 8 seconds ago Up 7 seconds 6379/tcp redis_v1.0守护式容器并不会像上一个容器一样将主机控制台附着到新的shell传话上而是仅仅返回一个容器的ID而已。四、进入容器在使用-d参数时容器启动后会进入后台用户无法看到容器中的信息也无法进行操作这个时候需要进入容器进行操作推荐使用官方的attach或exec命令。4.1 attache命令语法​​​​​​​docker attach [OPTIONS] CONTAINER [rootlocalhost ~]# docker attach 081a787888a14.2 exec命令语法​​​​​​​docker exec [OPTIONS] CONTAINER COMMAND [ARG...] OPTIONS说明 -d :分离模式: 在后台运行 -i :即使没有附加也保持STDIN 打开 -t :分配一个伪终端 [rootlocalhost ~]# docker exec -it 3b93cdf44fc3 /bin/bash五、删除容器可以使用docker [container] rm命令来删除处于终于或退出状态的容器命令格式为​​​​​​​docker rm [OPTIONS] CONTAINER [CONTAINER...] OPTIONS说明 -f :通过 SIGKILL 信号强制删除一个运行中的容器 -l :移除容器间的网络连接而非容器本身 -v :删除与容器关联的卷 例如 [rootlocalhost ~]# docker rm -f 081a787888a1 删除所有已经停止的容器 docker rm $(docker ps -a -q)六、查看容器中的进程查看容器内进程可以使用top子命令其语法格式如下​​​​​​​docker top [OPTIONS] CONTAINER [ps OPTIONS] 查看容器redis-test的进程信息 [rootlocalhost ~]# docker top redis-test UID PID PPID C STIME TTY TIME CMD systemd 4216 1215 0 16:30 pts/2 00:00:01 redis-server *:6379 查看所有运行容器的进程信息 for i in docker ps |grep Up|awk {print $1};do echo \ docker top $i; done七、查看统计信息查看统计信息可以使用stats子命令其语法格式如下​​​​​​​docker stats [OPTIONS] [CONTAINER...] Options说明 --all , -a输出所有容器统计信息。 --format格式化输出信息。 --no-stream不持续输出默认会自动更新持续实时结果。 --no-trunc不截断输出信息。 [rootlocalhost ~]# docker stats redis-test CONTAINER CPU % MEM USAGE/LIMIT MEM % NET I/O redis-test 0.28% 25.24 MB/3.958 GB 0.64% 2.406 kB/738 B