Docker实战系列【容器详解】

举报
子都爱学习 发表于 2021/12/22 21:48:18 2021/12/22
【摘要】 容器容器是镜像的运行时实例。正如从虚拟机模板上启动 VM 一样,用户也同样可以从单个镜像上启动一个或多个容器。虚拟机和容器最大的区别是容器更快并且更轻量级——与虚拟机运行在完整的操作系统之上相比,容器会共享其所在主机的操作系统/内核。下图为使用单个 Docker 镜像启动多个容器的示意图。容器相关命令查看容器:docker ps -a查看所有的容器的详细信息启动容器: docker run ...

容器

容器是镜像的运行时实例。正如从虚拟机模板上启动 VM 一样,用户也同样可以从单个镜像上启动一个或多个容器。
虚拟机和容器最大的区别是容器更快并且更轻量级——与虚拟机运行在完整的操作系统之上相比,容器会共享其所在主机的操作系统/内核。
下图为使用单个 Docker 镜像启动多个容器的示意图。


9.gif



容器相关命令

查看容器:docker ps -a

查看所有的容器的详细信息


ps.jpg



启动容器: docker run  -it/d  --name [container_name]  <image_name>  /bin/bash

启动新容器的命令。会创建一个容器,而命令则是希望容器运行的应用。
参数说明:
-i: 交互式操作。
-t: 终端。
-d:后台运行
image: 镜像。
/bin/bash:放在 镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
--restart:重启策略。通常建议在运行容器时配置好重启策略。这是容器的一种自我修复能力,可以在指定事件或者错误后重启来完成自我修复。
容器支持的重启策略包括 always、unless-stopped 和 on-failed。

要退出终端,直接输入 exit:


run.jpg


运行容器:docker start [container_id/name]
启动一个已停止的容器


start.jpg


重启容器:docker restart [container_id/name]

重启一个容器

关闭容器:docker stop [container_id/name]

停止一个运行中的容器


stop.jpg


删除容器:docker rm [-f] [container_id/name]

删除一个容器,如果一个容器运行中需要加-f


del.jpg


进入容器:docker exec -it [container_id/name] /bin/bash

进入容器终端,使用shell命令操作容器

提交容器:docker commit -m "改动信息" -a "作者" [container_id/name] [new_image:tag]

提交一个容器为一个新的镜像

容器日志:docker log

查看一个容器的日志

容器属性: docker inspect [container_id/name]

查看一个容器的属性信息


容器与数据管理

docker的镜像是只读的,虽然依据镜像创建的容器可以进行操作,但是我们不能将数据保存到容器中,因为容器会随时关闭和开启
解决方案就是:数据卷和数据卷容器

shuju.png

数据卷
将宿主机目录中的某个目录,映射到容器中,作为数据存储的目录

docker run -it --name [容器名字] -v [宿主机文件目录] :[容器文件目录] [镜像名称]

注意:
    -v [宿主机文件目录] :[容器文件目录]    可以存在多个,表示同时挂载多个
    

数据卷容器
将宿主机目录,使用容器的方式来表示,然后其他的应用容器将数据保存在这个容器中,达到大批量数据同时存储的目的

# 创建数据卷容器
docker create -v [宿主机文件目录] :[容器文件目录]  --name [容器名称] [镜像名称] [命令可选]

#使用数据卷容器
docker run --volumes-from [数据卷容器的名字/di] -d --name [容器名称] [镜像名称] [命令(可选)]

容器数据备份

创建备份目录

mkdir /backup/

创建数据卷容器

docker create -v /data --name v-test nginx

创建备份容器,执行备份命令后自动删除

docker run  --rm --volumes-from 4648597c7d98g7 -v /backup:/backup nginx tar zcf /backup/data.tar.gz /data

验证

# 宿主机
ls /backup

容器数据还原

假设容器内数据被清除

rm -f /data/*

用宿主机的/data数据还原容器/data

docker run  --rm --volumes-from 4648597c7d98g7 -v /backup:/backup nginx tar xf /backup/data.tar.gz -C /

验证

# 容器
ls /data

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。