Docker05 Docker容器

目录

参考书目: 黄靖钧. Docker从入门到实战[M]. 机械工业出版社, 2017.

一、容器的概念

        Docker容器是镜像的运行实例。容器在镜像已有的文件层添加一层可读可写的文件层,使得容器就像是一个动态的镜像。所以,docker的内部结构必定与镜像结构十分相似。

docker镜像结构

        如图所示,在docker容器中包含docekr镜像层以及在镜像层上建立的只读初始化层以及可读写层。在初始化层存储的大多是容器环境初始化时与容器相关的环境信息(容器主机名、主机host信息和域名服务文件)。可读写层用到了写时复制技术,虽然docker容器在可读写层可以看到数据卷的内容,但仅是挂载点,真实内容在宿主机上。

二、容器的基本操作

命令 说明
attach 依附到正在运行的容器
cp 从容器里面复制文件或者目录到宿主机文件系统或以STDOUT形式输出
create 创建一个新的容器
diff 检查容器的文件系统改动
events 实时获得Docker服务器端的事件信息
exec 在一个运行的容器里面运行命令
export 导出容器的文件系统到一个归档文件
kill 杀死一个运行中的容器
logs 获取容器的日志
pause 暂停容器内部的所有进程
port 输出容器的端口信息
ps 显示容器列表
rename 重命名一个容器
restart 重启容器
rm 删除一个或者多个容器
run 运行一个新容器
start 运行一个或者多个非运行状态的容器
stats 实时显示容器的资源使用情况
stop 停止正在运行的容器
top 显示容器内正在运行的进程
unpause 恢复容器内部所有进程
update 更新一个或多个容器的配置
wait 阻塞指导容器停止,然后打印他的退出代码

三、容器操作实例

3.1 docker create

# 创建一个容器
gupan@ubuntu:~$ sudo docker create -it ubuntu
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
a48c500ed24e: Pull complete 
1e1de00ff7e1: Pull complete 
0330ca45a200: Pull complete 
471db38bcfbf: Pull complete 
0b4aba487617: Pull complete 
Digest: sha256:c8c275751219dadad8fa56b3ac41ca6cb22219ff117ca98fe82b42f24e1ba64e
Status: Downloaded newer image for ubuntu:latest
59df0946091d4b0408521404413e5a501977c1153667220ad28774ab290bf17a

gupan@ubuntu:~$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
59df0946091d        ubuntu              "/bin/bash"         2 minutes ago       Created                                 laughing_saha
gupan@ubuntu:~$ 

3.2 docker run

        启动容器有两种情况
1. 原来没有这个容器,需要基于一个镜像启动新的容器
2. 宿主机本来有一个容器,但是这个容器处于非运行状态,可以把这个容器启动起来

使用docker run新建容器并启动,用这个容器来输出一句话

# 使用docker run新建容器并启动,用这个容器来输出一句话
gupan@ubuntu:~$ sudo docker run ubuntu /bin/echo "Hello World"
Hello World

# 查看容器状态
gupan@ubuntu:~$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
9a2b868de95b        ubuntu              "/bin/echo 'Hello ..."   35 seconds ago      Exited (0) 33 seconds ago                       gallant_poitras
59df0946091d        ubuntu              "/bin/bash"              10 minutes ago      Created                                         laughing_saha
gupan@ubuntu:~$ 

启动容器的内部运行步骤

  1. 检查本地是否存在这个镜像,如果没有就从仓库下载
  2. 如果有检查命令是否有参数冲突
  3. 利用本地镜像创建一个容器
  4. 挂载可读写层,启动容器的一系列配置(各种资源隔离操作)
  5. 在应用参数值时,如果入到参数有误,启动会终止
  6. 如果没有问题则执行应用程序,执行完毕终止容器

案例:

# -i 代表让容器的标准输出始终打开
# -t 让Docker分配一个标准并绑定到容器标准输出上
# -it 代表绑定到容器内部,因此在该终端下执行的动作会在容器内部执行
gupan
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值