Docker容器管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker容器管理相关的知识,希望对你有一定的参考价值。
1.创建一个容器,但该容器并没有启动
docker create -it centos //这样可以创建一个容器,但该容器并没有启动
docker start container_id //启动容器后,使用docker ps查看到,也有stop、restart命令
例:
[[email protected] ~]# docker create -it centos 2aa9982b82a2f91891c1560f6fb21f41b628115de9903630664523139996fbfd [[email protected] ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2aa9982b82a2 centos "/bin/bash" 2 minutes ago condescending_pasteur [[email protected] ~]# docker exec -it 2aa9982b82a2 /bin/bash //进入该运行的容器 [[email protected] /]#
2. 依托已有镜像创建并启动一个容器 :
# docker run -it 已有镜像名 /bin/bash
例: docker run -it centos /bin/bash
[[email protected] ~]# docker run -itd --name daixuan centos /bin/bash [[email protected] /]#
之前我们使用的docker run 相当于先create再start
如果是修改过TAG的镜像 要加镜像名:TAG 因为镜像默认的 TAG 为 latest,可以省略
要把
选项 放到镜像名前
-i 表示让容器的标准输入打开
-t 表示分配一个伪终端
/bin/bash 表示在这个容器里面运行的一个命令 也可以直接写为 bash
-d 选项直接放到后台运行,如果不加 -d,exit后,这个容器会关闭
-p 可以指定容器的映射端口 格式为 -p 宿主机端口:容器端口 详见创建私有仓库一节
--name 指定容器的NAME列显示,例如:
[[email protected] ~]# docker run -itd --name daixuan centos bash f29f8fdfb7b16956e4684a3c83b7f66559d1837ac4554cc99566866365f0fd2c [[email protected] ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f29f8fdfb7b1 centos "bash" 10 seconds ago Up 8 seconds daixuan
3.
启动关闭一个容器:
# docker start CONTAINER_ID/NAME
# docker stop CONTAINER_ID/NAME
例:docker start 0da8
docker start
zhpro
CONTAINER_ID NAME 为dokcer ps -a出来的第一列
和最后的NAMES列
也可以同时启动关闭多个:
例:
[[email protected] ~]# docker start daixuan evil_ptolemy daixuan evil_ptolemy [[email protected] ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f29f8fdfb7b1 centos "bash" 25 minutes ago Up 7 seconds daixuan 32bbf2a2807d centos "bash" 59 minutes ago Up 7 seconds evil_ptolemy
4.
进入一个容器
# docker exec -it CONTAINER_ID /bin/bash
# docker attach CONTAINER_ID
[[email protected] ~]# docker exec -it f29f8fdfb7b1 /bin/bash [[email protected] /]# [[email protected] /]# exit exit [[email protected] ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED f29f8fdfb7b1 centos "bash" 11 minutes ago [[email protected] ~]# docker attach f29f8fdfb7b1 [[email protected] /]# [[email protected] ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED
注意区别:使用 attach 命令如果退出容器,这个容器同时也会终止 ,exec退出容器,容器继续运行
如果用--name 指定了容器名的话,后面也可以跟容器名 例: #docker exec -it daixuan bash
5. 查看正在运行的容器或所有容器:
# docker ps //查看正在运行容器
# docker ps -a //查看所有容器
6.
删除一个容器:
# docker rm CONTAINER_ID/NAME
-f 选项可强制删除一个容器,如果这个容器正在运行的话
也可以同时删除多个
例:# docker rm daixuan evil_ptolemy
注意:删除容器:rm,删除镜像:rmi
7. 启动容器的同时也可以运行一些命令
例: #
docker run -d centos bash -c "while :;do echo "123"; sleep 3;done "
[[email protected] ~]# docker run -d centos:latest bash -c "while :; do echo 123; sleep 3; done" 58fe37c071aea5f04a080004d43747db53f5ce607b366f48ce9b0e9f634769c8
8.
查看容器的日志输出信息
# docker logs
CONTAINER_ID
[[email protected] ~]# docker logs 58fe37c071a 123 123 123
9. 导入导出容器 -方便迁移
# docker export CONTAINER_ID > file.tar //容器导出使用export
# cat file.tar | docker import - 自定义镜像名 //容器导入使用import
为什么导入时候是镜像呢? 因为容器导出成文件,导出的是一个死的镜像,容器是作为一个镜像导入的,需要在镜像的基础上,在去产生并 docker run 这个容器
比如说openvz下载下来的镜像其实是容器需要这样导入:
cat 包名.tar.gz |docker import - 镜像名(可自定义) //区别:容器导入import,镜像导入load
例:
[[email protected] ~]# docker start 8a92dd7fcc8b 8a92dd7fcc8b [[email protected] ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8a92dd7fcc8b centos "bash -c ‘while :; d 21 minutes ago Up 2 minutes focused_pasteur [[email protected] ~]# docker export 8a92dd7fcc8b > daixuan_linux.tar [[email protected] ~]# ls daixuan_linux.tar [[email protected] ~]# docker rm -f 8a92dd7fcc8b 8a92dd7fcc8b [[email protected] ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [[email protected] ~]# cat daixuan_linux.tar | docker import - daixuan_linux 1eada4829386695938a03c59ffc176bf3facf7bdb20c1c37f3ca91c3d84e6923 [r[email protected] ~]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE daixuan_linux latest 1eada4829386 4 minutes ago 196.6 MB [[email protected] ~]# docker run -itd daixuan_linux bash aa81ccc62e046860ddb5d5f22cb3427dbfad7719198bb20cd854cfad9dc13a9a [[email protected] ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES aa81ccc62e04 daixuan_linux "bash" 7 seconds ago Up 6 seconds thirsty_perlman
10. 新建一个容器,退出时自动删除这个容器
--rm
docker run --rm -it centos bash -c"sleep 30" //--rm可以让容器退出后直接删除,在这里命令执行完容器就会退出,不能和-d一起使用
本文出自 “梅花香自苦寒来!” 博客,请务必保留此出处http://daixuan.blog.51cto.com/5426657/1753579
以上是关于Docker容器管理的主要内容,如果未能解决你的问题,请参考以下文章