侧边栏壁纸
博主头像
码森林博主等级

一起走进码森林,享受编程的乐趣,发现科技的魅力,创造智能的未来!

  • 累计撰写 146 篇文章
  • 累计创建 74 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

Docker(3):docker 容器的内部结构和生命周期

码森林
2022-02-24 / 0 评论 / 0 点赞 / 797 阅读 / 3,496 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-02-24,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

本文主要通过 tomcat 的容器为例,了解 docker 容器的内部结构以及容器的生命周期。

容器的内部结构

创建 tomcat 容器

docker run -p 80:8080 -d tomcat:jdk8-corretto

查看容器

docker ps
__________________________________________
CONTAINER ID   IMAGE                  COMMAND             CREATED          STATUS          PORTS                                   NAMES
4d6f010629f9   tomcat:jdk8-corretto   "catalina.sh run"   13 minutes ago   Up 13 minutes   0.0.0.0:80->8080/tcp, :::80->8080/tcp   pensive_chatterjee

进入容器内部

docker exec -it 4d6f010629f9 /bin/bash
__________________________________________
bash-4.2# 

此时可以通过命令查看容器信息

ls
__________________________________________
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work

#可以看到容器内目录包含了tomcat的相关目录,一些linux下的目录则没有,所以整体来看容器是轻量级的。

JDK 信息

java -version
__________________________________________
openjdk version "1.8.0_292"
OpenJDK Runtime Environment Corretto-8.292.10.1 (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM Corretto-8.292.10.1 (build 25.292-b10, mixed mode)

系统信息

cat /proc/version
__________________________________________
Linux version 3.10.0-1160.24.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Thu Apr 8 19:51:47 UTC 2021

退出容器

exit

容器的生命周期

1、创建过程

#创建容器
docker create tomcat:jdk8-corretto  
__________________________________________
95ca3a6c2393f569871c2ebade86c37c544126f73fe48e5bc4b924d2541b6b2c
#创建成功

#查看容器
docker ps
__________________________________________
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
#docker ps 只能查看运行中的容器

#查看所有容器
docker ps -a
__________________________________________
CONTAINER ID   IMAGE                  COMMAND             CREATED         STATUS    PORTS     NAMES
95ca3a6c2393   tomcat:jdk8-corretto   "catalina.sh run"   4 minutes ago   Created             eager_villani
#可以看到 STATUS 为 Created,Created 为 Stopped 的子状态

2、启动过程

#启动容器
docker start 95ca3a6c2393
__________________________________________
95ca3a6c2393
#启动成功

#查看容器
docker ps -a
__________________________________________
CONTAINER ID   IMAGE                  COMMAND             CREATED         STATUS          PORTS      NAMES
95ca3a6c2393   tomcat:jdk8-corretto   "catalina.sh run"   8 minutes ago   Up 22 seconds   8080/tcp   eager_villani
#此时可以看到 STATUS 变为 UP,表示已上线,正在运行中

3、暂停过程

#暂停容器
docker pause 95ca3a6c2393
__________________________________________
95ca3a6c2393
#暂停成功

#查看容器
docker ps -a
__________________________________________
CONTAINER ID   IMAGE                  COMMAND             CREATED          STATUS                  PORTS      NAMES
95ca3a6c2393   tomcat:jdk8-corretto   "catalina.sh run"   12 minutes ago   Up 3 minutes (Paused)   8080/tcp   eager_villani
#此时容器暂停已经变为 Paused,表示已暂停

#恢复容器
docker unpause 95ca3a6c2393
__________________________________________
95ca3a6c2393

#查看容器
docker ps -a
__________________________________________
CONTAINER ID   IMAGE                  COMMAND             CREATED          STATUS         PORTS      NAMES
95ca3a6c2393   tomcat:jdk8-corretto   "catalina.sh run"   16 minutes ago   Up 8 minutes   8080/tcp   eager_villani
#此时容器已恢复

4、停止容器(如果暂时不需要该容器)

#停止容器
docker stop 95ca3a6c2393
__________________________________________
95ca3a6c2393

#查看容器
docker ps -a
__________________________________________
CONTAINER ID   IMAGE                  COMMAND             CREATED          STATUS                       PORTS     NAMES
95ca3a6c2393   tomcat:jdk8-corretto   "catalina.sh run"   19 minutes ago   Exited (143) 8 seconds ago             eager_villani
#此时容器状态变为Exited,表示已退出

#启动容器
docker start 95ca3a6c2393
__________________________________________
95ca3a6c2393

#查看容器
docker ps -a
__________________________________________
CONTAINER ID   IMAGE                  COMMAND             CREATED          STATUS          PORTS      NAMES
95ca3a6c2393   tomcat:jdk8-corretto   "catalina.sh run"   21 minutes ago   Up 10 seconds   8080/tcp   eager_villani
#此时容器又恢复为Up状态

5、移除容器(如果不需要该容器了)

#移除容器
docker rm -f 95ca3a6c2393
__________________________________________
95ca3a6c2393
#移除成功

#查看容器
docker ps -a
__________________________________________
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
#此时容器不再出现在容器列表中了

总结

本文主要通过命令操作以及执行结果来了解容器的内部结构和生命周期,通过频繁的命令,让这些命令了然于胸,后面我们来学习更多的进阶知识。

0

评论区