LaoCat带你认识容器与镜像(二【二章】)

系列二章二小节,发现概念性的知识看得人并不多,csdn的一篇解决问题的博文,却涨粉近400+,有点意思~

系列目录
LaoCat带你认识容器与镜像(一)
LaoCat带你认识容器与镜像(二【一章】)
LaoCat带你认识容器与镜像(二【二章】)
LaoCat带你认识容器与镜像(二【三章】)
LaoCat带你认识容器与镜像(三【上】)
LaoCat带你认识容器与镜像(三【下】)
LaoCat带你认识容器与镜像(四【上】)
LaoCat带你认识容器与镜像(四【下】)
LaoCat带你认识容器与镜像(番外一【Harbor】)
LaoCat带你认识容器与镜像(实践篇一上)
LaoCat带你认识容器与镜像(实践篇一下)
LaoCat带你认识容器与镜像(实践篇二上)
LaoCat带你认识容器与镜像(实践篇二下)

本章内容

操作Docker容器

本文实操全部基于Ubuntu 20.04

同样,容器也是Docker重要的核心成员之一,Docker容器简单来说是一个运行实例,和上节的镜像(静态的只读文件)相比,容器是运行时的可写文件。

创建容器

一、新建容器
使用命令docker create命令可以创建一个容器,执行命令如下。

再次输入docker ps -a命令,可以看到我们刚刚创建的容器,执行命令如下。

容器被create命令创建会处于停止状态,我们可以使用docker start来启动它;create命令附加参数较多,这里只列举部分常用的。

附加参数备注
-d是否后台(守护态)运行容器,默认为否。
–net指定容器的网络模式。
-p指定映射本地端口。
-v主机文件卷挂载到容器内。
-w指定容器的默认工作目录。
-e指定容器的环境变量。
–env-file同上,这个是指定从某个文件中读取环境变量。
–like连接到其他的容器,可以使IP或容器名。
–name指定容器别名。
–m指定容器的使用内存,单位可以使b、k、m或g。
–ulimit限制容器的最大文件数、最大进程数。

※ 这里只是列举了一些比较常用的附加参数,实际上createrun的附加参数特别多,如果有想了解的大家可以选择阅读《Docker技术入门与实战》或官网文档阅读了解。


二、启动容器
使用命令docker start可以启动一个已经创建好的容器或已经停止的容器,执行命令如下。


三、新建并启动容器
使用命令docker run可以直接创建容器并启动,相当于上边俩个命令的结合,docker run命令会使Docker在后台检测该运行镜像是否存在于本地镜像仓库,不存在就会从公共或配置好的个人镜像仓库拉取并下载,同时会分配一个文件系统给容器,并在只读镜像层外挂载一层可读写层,然后从宿主机的网桥接口中桥接一个虚拟接口,从地址池配置一个IP地址给到容器,最后执行指定的应用程序,执行完毕自动终止,推荐! 执行命令如下。

很多时候,容器需要后台运行也就是所谓的守护状态运行,这时,可以添加-d参数来实现,容器启动后都会返回一个唯一ID。
当然,并不是每一次的docker run会使容器正常运行,如果因为命令无法正常运行,就会导致容器直接终止或退出,下方列举一些非正常运行的错误码。

  • 127:该错误码指容器内命令无法找到。
  • 126:该错误码指启动容器的命令无法执行,最常见于权限不够。
  • 125:该错误码指Docker daemon执行错误,常见于执行了非Docker所支持的命令。

※ 演示命令不适用于生产环境,生产环境一定要挂载数据目录,防止容器或服务器重启导致配置丢失,尤其是数据库服务这些,不挂载数据目录,会导致数据丢失,读者一定要格外留心注意。


四、停止容器
使用命令docker stop可以停止一个正在运行中的容器,也可以通过docker kill来停止一个正在运行中的容器,俩者区别在于前者会先向容器发送sigterm信号,等待一段超时时间(默认10秒)后,再发送sigkill信号来停止容器,而后者会直接发送sigkill信号来强行停止容器,推荐前者! ,执行命令如下。



有细心读者会疑惑,有了启动,有了停止,没有重启这个操作吗?有!我们可以执行docker restart来重新启动该容器。


五、进入容器
后台启动的容器,我们是无法看到容器中的信息的,也无法进行操作,这时我们可以执行命令docker attachdocker exec,此处不推荐采用前者进入容器,因为attach命令打开的窗口是阻塞的,当某个窗口因命令阻塞时,其他窗口将无法执行操作,所有窗口都会同步显示,不是很方便实际使用与操作,这里推荐后者exec,执行命令如下。

这里介绍一下-it附加参数:

  • -i:打开标准输入接受用户输入的命令。
  • -t:分配一个伪终端。

※ 指定-it附加参数来保持标准输入打开,并且分配一个伪终端是常用的进入容器方式。


六、删除容器
使用docker rm可以删除已经停止的容器,执行命令如下。

有读者可能疑惑,不能强制删除容器吗?可以的,添加-f附加参数,Docker会先发送sigkill信号给容器,停止容器,然后强行删除,这里不推荐这种方式,就不做演示了,其他附加参数:

  • -v:删除该容器挂载的数据卷
  • -l:删除容器的连接,该容器并不会被删除。
  • -f:是否强制删除容器。

七、导出容器
使用docker export可以导出容器为一个文件,不关心容器是否正在运行,只要是已经创建好的,都可以通过该命令导出为一个文件,常常用于应用迁移,执行命令如下。

通常添加-o附加参数来指定导出的文件名,docker export mynginx > mynginx.tar同理。


八、导入容器
使用docker import可以将上述导出的容器文件导入为镜像,执行命令如下。

这与上篇操作镜像中的docker load命令及其相似,都是导入为一个镜像,俩者区别是load是将镜像存储文件导入为镜像,而import是将容器快照导入为镜像,import会将容器快照文件的历史数据与元数据信息全部丢弃,但可以在导入时重新指定标签等元数据信息,而load会保存完整的记录,不能再导入时重新指定标签等元数据信息,体积更大。


☆ 参考文献:
《Docker技术入门与实战》 第2版
《Docker技术入门与实战》 第3版

◎ 文中所用到的资源链接:
【SIGINT,SIGKILL,SIGTERM信号区别,各类信号总结】https://blog.csdn.net/WJSZMD/article/details/89331751

您的点赞、评论、收藏、转发、关注是对我持续创作的最大帮助~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值