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个状态已经差不多了。记录下自己,同时希望能帮助到需要的朋友们