Docker容器生命周期及其状态转换

Docker容器的生命周期,可分为5种:创建、运行、暂停、停止、删除。

  • 创建一个容器 docker create

#基于一个镜像创建容器,例如:基于busybox镜像,创建一个名字为busybox的容器

[zxx@192 ~]$ docker images        #查询本地,目前有哪些镜像
REPOSITORY             TAG       IMAGE ID       CREATED         SIZE
my_first_build_image   latest    19b0c90b21d7   3 hours ago     4.28MB
busybox                latest    ff7a7936e930   7 months ago    4.28MB

[zxx@192 ~]$ docker create -it --name=busybox busybox        #创建名为busybox的容器
e933970ef13069104bfe89395578437f455e994b7696258f794023214b98140f

[zxx@192 ~]$ docker ps -a        #虽然容器创建成功,但还没有启动,状态为:Create
CONTAINER ID   IMAGE       COMMAND     CREATED          STATUS                      PORTS     NAMES
e933970ef130   busybox     "sh"        51 seconds ago   Created                               busybox
7b1c60227edb   busy-test   "/bin/sh"   19 minutes ago   Exited (0) 18 minutes ago             busy-test

注意( --name= 容器名 参考的镜像名)


  • 运行一个容器  docker start

[zxx@192 ~]$ docker start busybox        #启动容器 busybox   
busybox
[zxx@192 ~]$
[zxx@192 ~]$ docker ps -a                        #查看状态
CONTAINER ID   IMAGE       COMMAND     CREATED              STATUS                      PORTS     NAMES
e933970ef130   busybox     "sh"        About a minute ago   Up 9 seconds                          busybox
7b1c60227edb   busy-test   "/bin/sh"   19 minutes ago       Exited (0) 19 minutes ago             busy-test

  • 暂停或停止一个容器  docker stop 

[zxx@192 ~]$ docker stop e933970ef130
e933970ef130
[zxx@192 ~]$ docker ps -a
CONTAINER ID   IMAGE       COMMAND     CREATED          STATUS                       PORTS     NAMES
e933970ef130   busybox     "sh"        6 minutes ago    Exited (137) 8 seconds ago             busybox
7b1c60227edb   busy-test   "/bin/sh"   24 minutes ago   Exited (0) 24 minutes ago              busy-test

  • 另一种启动方式  docker run

[zxx@192 ~]$ docker run -it busybox /bin/sh
/ # ls
bin    dev    etc    home   lib    lib64  proc   root   sys    tmp    usr    var
/ #

/ # exit                #退出容器
[zxx@192 ~]$

注意(有两种方式,可以进入容器内部)

  • 方式一 docker attach(不推荐,原因自查,在此就不赘述了)
  • 方式二 docker exec(推荐)

[zxx@192 ~]$ docker attach busybox        #方式一  docker attach (不推荐使用)
You cannot attach to a stopped container, start it first        # 报错了,暂时无法attach进入,因为busybox容器关闭了

[zxx@192 ~]$ docker restart busybox        #重新启动busybox容器
busybox

[zxx@192 ~]$ docker attach busybox        
/ # ls                     #此刻,已经成功进入容器内部
bin    dev    etc    home   lib    lib64  proc   root   sys    tmp    usr    var
/ #

[zxx@192 ~]$ docker exec -it busybox /bin/bash        #方式二 docker exec(推荐)
Error response from daemon: container    e933970ef13069104bfe89395578437f455e994b7696258f794023214b98140f is not running


[zxx@192 ~]$
[zxx@192 ~]$ docker start busybox        #上面报错了:容器没有运行,start一下
busybox


[zxx@192 ~]$ docker exec -it busybox  /bin/bash        #这里又说没有/bin/bash
OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown
[zxx@192 ~]$ docker exec -it busybox  /bin/sh        #我们换一个bash
/ # ls                                                                        #成功进到容器内部了
bin    dev    etc    home   lib    lib64  proc   root   sys    tmp    usr    var
/ #             

  • 删除一个容器 docker rm

[zxx@192 ~]$ docker ps -a        #查看下有哪些容器
CONTAINER ID   IMAGE       COMMAND     CREATED          STATUS                      PORTS     NAMES
52a274b2f230   busybox     "/bin/sh"   15 minutes ago   Exited (0) 14 minutes ago             exciting_cartwright
e933970ef130   busybox     "sh"        27 minutes ago   Up 5 minutes                          busybox
7b1c60227edb   busy-test   "/bin/sh"   45 minutes ago   Exited (0) 45 minutes ago             busy-test

[zxx@192 ~]$ docker rm 52a274b2f230        #删除52a274b2f230,这个容器
52a274b2f230

  • 导出一个容器 docker export

[zxx@192 ~]$ docker exec -it busybox /bin/sh        #先进入容器,在/tmp下创建test.txt,为了验证,后面容器导入
/ # cd /tmp
/tmp # touch test.txt
/tmp # exit

[zxx@192 ~]$ docker export busybox > ./busybox-export.tar        #导出到busybox-export.tar
[zxx@192 ~]$ ls        #由ls,看到目录下已经有了busybox-export.tar
BuildDocker_by_Dockerfile  busybox-export.tar  deamon.json  test

  • 导入一个容器  docker import

[zxx@192 ~]$
[zxx@192 ~]$ docker import busybox-export.tar busybox:export     #导入   
sha256:a31b8279523ca9d207365ab4f738ac2d6be640ff4e8b9872fa508282ccd2925c


[zxx@192 ~]$ docker images        #上一步的docker import,只是一个busybox:export镜像
REPOSITORY             TAG       IMAGE ID       CREATED          SIZE
busybox                export    a31b8279523c   9 seconds ago    4.28MB
busy-test              latest    eae5cfb62b61   56 minutes ago   4.28MB
my_first_build_image   latest    19b0c90b21d7   3 hours ago      4.28MB
busybox                latest    ff7a7936e930   7 months ago     4.28MB


[zxx@192 ~]$
[zxx@192 ~]$ docker run -it --name=busy busybox:export /bin/sh        #需要我们重新创建容器 busy,并运行它
/ # ls /tmp/                #验证 是否导入成功
test.txt
/ #

到此,Docker容器生命周期 这5个状态已经差不多了。记录下自己,同时希望能帮助到需要的朋友们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值