Docker容器管理
1.创建一个容器,但该容器并没有启动docker create -it centos //这样可以创建一个容器,但该容器并没有启动docker start container_id//启动容器后,使用docker ps查看到,也有stop、restart命令
例:
1
2
3
4
5
6
7
# docker create -it centos
2aa9982b82a2f91891c1560f6fb21f41b628115de9903630664523139996fbfd
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2aa9982b82a2 centos"/bin/bash" 2 minutes ago condescending_pasteur
# docker exec -it 2aa9982b82a2 /bin/bash //进入该运行的容器
#
2. 依托已有镜像创建并启动一个容器 :
# docker run -it 已有镜像名 /bin/bash例: docker run -it centos /bin/bash
1
2
# docker run -itd --name daixuan centos /bin/bash
#
之前我们使用的docker run 相当于先create再start如果是修改过TAG的镜像 要加镜像名:TAG 因为镜像默认的 TAG 为 latest,可以省略
要把 选项 放到镜像名前
-i 表示让容器的标准输入打开
-t 表示分配一个伪终端
/bin/bash 表示在这个容器里面运行的一个命令 也可以直接写为 bash
-d 选项直接放到后台运行,如果不加 -d,exit后,这个容器会关闭 -p 可以指定容器的映射端口 格式为 -p 宿主机端口:容器端口 详见创建私有仓库一节--name 指定容器的NAME列显示,例如:
1
2
3
4
5
# docker run -itd --name daixuan centosbash
f29f8fdfb7b16956e4684a3c83b7f66559d1837ac4554cc99566866365f0fd2c
# docker ps
CONTAINER IDIMAGECOMMANDCREATED STATUSPORTS NAMES
f29f8fdfb7b1centos "bash"10 seconds ago Up8 seconds daixuan
3. 启动关闭一个容器:
# docker start CONTAINER_ID/NAME# docker stop CONTAINER_ID/NAME例:docker start 0da8docker start zhpro
CONTAINER_ID NAME 为dokcer ps -a出来的第一列 和最后的NAMES列
也可以同时启动关闭多个:例:
1
2
3
4
5
6
7
# docker start daixuanevil_ptolemy
daixuan
evil_ptolemy
# docker ps
CONTAINER IDIMAGECOMMANDCREATED STATUS PORTS NAMES
f29f8fdfb7b1centos "bash"25 minutes ago Up 7 secondsdaixuan
32bbf2a2807d centos "bash" 59 minutes ago Up 7 secondsevil_ptolemy
4. 进入一个容器
# docker exec -it CONTAINER_ID /bin/bash# docker attach CONTAINER_ID
1
2
3
4
5
6
7
8
9
10
11
# docker exec -it f29f8fdfb7b1 /bin/bash
#
# exit
exit
# docker ps
CONTAINER ID IMAGE COMMAND CREATED
f29f8fdfb7b1 centos "bash" 11 minutes ago
# docker attachf29f8fdfb7b1
#
# 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 "
1
2
# docker run -d centos:latest bash -c "while :; do echo 123; sleep 3; done"
58fe37c071aea5f04a080004d43747db53f5ce607b366f48ce9b0e9f634769c8
8. 查看容器的日志输出信息
# docker logs CONTAINER_ID
1
2
3
4
# 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例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# docker start 8a92dd7fcc8b
8a92dd7fcc8b
# docker ps
CONTAINER IDIMAGE COMMAND CREATED STATUS PORTS NAMES
8a92dd7fcc8bcentos"bash -c 'while :; d21 minutes ago Up 2 minutes focused_pasteur
# docker export 8a92dd7fcc8b > daixuan_linux.tar
# ls
daixuan_linux.tar
# docker rm -f 8a92dd7fcc8b
8a92dd7fcc8b
# docker ps
CONTAINER ID IMAGE COMMANDCREATED STATUS PORTS NAMES
# cat daixuan_linux.tar | docker import - daixuan_linux
1eada4829386695938a03c59ffc176bf3facf7bdb20c1c37f3ca91c3d84e6923
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
daixuan_linux latest1eada4829386 4 minutes ago 196.6 MB
# docker run -itd daixuan_linux bash
aa81ccc62e046860ddb5d5f22cb3427dbfad7719198bb20cd854cfad9dc13a9a
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa81ccc62e04 daixuan_linux "bash" 7 seconds agoUp 6 secondsthirsty_perlman
10. 新建一个容器,退出时自动删除这个容器--rmdocker run --rm -it centos bash -c"sleep 30" //--rm可以让容器退出后直接删除,在这里命令执行完容器就会退出,不能和-d一起使用
页:
[1]