docker 容器的基本管理

1 容器的管理

1.1 容器的创建

#docker [OPTIONS] COMMAND
docker creat -it centos:latest
#docker creat 命令新建的容器是处于停止状态 后期使用docker start启动

# 实际应用中一般是使用docker run

1.1 新建并启动容器

1.1.1 容器的生命周期

容器其实本质是Host宿主机的进程,操作系统对于进程的管理是基于进程的状态切换的,进程从创建到销毁可能经过的路径图可以称之为“生命周期”。因此也就不难想到,其实对容器的管理也应该有一套状态以及状态转移的条件,这就是Docker容器的生命周期

可以将镜像与容器的关系理解为类和对象/实例的关系。镜像保存在硬盘上,而运行着的容器是一个隔离的进程。

image-20201126195532861.png

1.1.2 docker run 创建和启动容器的过程

  1. 检查本地是否存在指定的镜像,不存在就从公有仓库或者自己配置的私有镜像仓库下载
  2. 利用镜像创建一个容器,并在只读的镜像层外面挂载一层可读写层
  3. 从宿主机配置的网桥接口中桥接一个虚拟接口到容器中
  4. 从网桥的地址池中配置一个IP地址给容器
  5. 执行用户指定的应用程序
  6. 执行完毕后容器被自动终止

Docker 容器启动时,默认会把容器内部第一个进程,也就是pid=1的程序,作为docker容器是否正在运行的依据,如果 docker 容器pid=1的进程挂了,那么docker容器便会直接退出

对于容器而言,其启动程序就是容器应用进程,容器就是为了主进程而存在的,主进程退出,容器就失去了存在的意义,从而退出,其它辅助进程不是它需要关心的东西。

我们以centos 镜像为例启动第一个容器

docekr run --name testdocker1 centos

查看启动的第testdocker1容器的状态

docker ps -a
image-20201128140017399.png

为什么 testdocker1 一启动就退出了?

dockerfile 在构建centos镜像时通过 CMD ["/bin/bash"] 指定了 通过此镜像启动容器默认运行的命令时是/bin/bash,所以以当容器启动执行/bin/bash,/bin/bash 应用程序一执行完成 退出,容器中没有一直执行的进程,也跟着退出了

/bin/bash 程序配合 -i参数 可以使 /bin/bash 程序一直处于 运行中,以交互式方式一直运行,此时容器也是一直运行着 exit 或者ctrl+c 终止/bin/bash 容器也会退出

docker run -it  --name "testdocker" centos /bin/bash
#-i --interactive Keep STDIN open even if not attached
#-i 交互式 一直保持标准输入打开
#-t  --tty 新开一个控制台连接

我们以nginx镜像为例再启动一个容器

docker run --name nginxtest1  nginx 
#就像Linux系统启动一个前台进程一样,容器里也运行了一个前台程序

启动容器时 是执行的/docker-entrypoint.sh nginx -g 'daemon off;' nginx 默认是以后台模式运行的,后面加'daemon off;' 禁止nginx以后台模式运行,

我们不加'daemon off;' 运行一个nginx容器,看一下是什么情况

docker run --name nginxtest2 nginx /docker-entrypoint.sh nginx -g
#/docker-entrypoint.sh nginx -g 会覆盖Dockerfile中 CMD自定义的默认执行的 /entrypoint.sh nginx -g 'daemon off;' 
image-20201128203138980.png

跟之前/bin/bash一样 nginx执行完成后,容器就退出了

制作镜像的Dokcerfile 中 CMD或者ENTRYPOINT 指令 定义了容器启动时容器执行的命令,即启动容器中的第一个进程,上面因为ginx /docker-entrypoint.sh nginx -g

CMD或者ENTRYPOINT 指令 不管是执行什么程序,一定要是一个工作在容器前台的守护进程,容器才可以启动后不会退出

要清楚两个概念

容器的前后台运行

​ docker run 通过镜像run起来的容器 可以比作是linux系统的一个运行起来的前台程序

docekr run -d --name test nginx 

加-d 参数 启动容器 容器会后台运行

容器中的进程前后台运行

容器中至少有一个工作在前台的守护进程

1.1.3 启动一个交互式的容器

docker run -it  --rm --name "testdocker" centos /bin/bash 
#-i --interactive Keep STDIN open even if not attached 意思就是会把交互界面保留着 
#-t  --tty 新开一个控制台连接
#进入容器后exit 容器会退出
#--rm 容器停止 容器也会被自动删除
# 此方式 适用于测试,调试,一次性工具

1.1.4 启动一个守护式守护容器启动

docker run  -d  --rm --name "testdocker" centos /bin/bash 
#-d detach 将应用程序剥离前台 进入后台运行 
# 这里
#此方式 适用于 应用服务

1.2 容器的关闭,启动

docker container stop testdocker
docker container start testdocker
#-i 启动交互式容器
docker container start -i testdocker

1.3 进入容器的方法

1.3.1 attach

docker container attach testdocker
#使用attach 连接时 当多个窗口同时attach到同一个容器的时候,所有窗口都会同步显示,当某个窗口阻塞时候,其他窗口也无法执行操作了

1.3.2 exec

#exec 是通过子进程的方式
docker container exec -it testdocker /bin/bash
#这种进入容器的方式,是在运行的容器中启动了一个/bin/bash的进程

1.4 删除容器

#docker rm 只能删除已经处于终止或者退出状态的容器,不能删除还处于运行中的容器
docker rm testdocker
#-f 参数删除可以删除正在运行的容器, docker会先发送一个SIGKILL信号给容器,终止其中的应用,之后强行删除
docker rm -f testdocker
#删除所有容器(自己测试用生产环境切勿使用)
docker rm -f `docker ps -qa`
#-l 移除容器间的网络连接,而非容器本身
#-v 删除与容器关联的卷

1.5 容器的查看

docker container ls -a
docker ps -a
#-a 是查看详细信息
docker ps -qa #查看所有容器的id
docker inspect dockertest #查看容器的 详细信息
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354