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容器管理的主要内容,如果未能解决你的问题,请参考以下文章

docker容器内怎么连接外部的mysql

浅述 Docker 的容器编排

浅述Docker的容器编排

浅述Docker的容器编排

Docker镜像制作和管理

Docker深入浅出系列教程——容器管理附加视频