Day 3 映像档 Images

在你要执行(新建)一个容器的时候,你就需要有映像档。映像档是一个模版,让 docker 知道要基於怎样的设定和内容来建立一个新容器。

docker 在建立容器时,会需要在本地端有对应的映像档。如果没有的话,会向远端的映像档仓库来下载 ( 预设值为官方维护的 docker hub )。

取得映像档

使用 docker pull 指令。下方例子是从远端拉取 nginx 映像档。

docker pull nginx
#Using default tag: latest
#latest: Pulling from library/nginx
#a330b6cecb98: Pull complete
#5ef80e6f29b5: Pull complete
#f699b0db74e3: Pull complete
#0f701a34c55e: Pull complete
#3229dce7b89c: Pull complete
#ddb78cb2d047: Pull complete
#Digest: sha256:a05b0cdd4fc1be3b224ba9662ebdf98fe44c09c0c9215b45f84344c12867002e
#Status: Downloaded newer image for nginx:latest
#docker.io/library/nginx:latest

此命令相当於 sudo docker pull registry.hub.docker.com/nginx ,在没有特别标注版号的状况下,会遇上抓取 tag 为 latest 的,也就是最新版本。
抓取下来後,就可以使用 docker run 来建立容器了。

移除映像档

在移除前,要先确定所有依赖於该映像档的容器都已被移除,才能正常删除映像档罗。
指令为:sudo docker rmi <container id / name>

列出本机端所有映像档

可以使用 docker images 指令

REPOSITORY                        TAG           IMAGE ID       CREATED         SIZE
nginx                             latest        822b7ec2aaf2   43 hours ago    133MB

REPOSITORY:代表映像档的仓库来源
TAG: 主要是用来标记同一个仓库下,不同版本的映像档
IMAGE ID:映像档 ID,此值会是唯一值
CREATED:此映像档的建立时间
SIZE:映像档大小

建立一个映像档

先从 Docker hub 下载一个映像档後,建立一个容器,并进行一些操作。

docker run -t -i training/sinatra /bin/bash
root@13fb70bb49f0: gem install json -v 1.5
# 在容器内安装 json 1.5 的套件版本後,使用 exit 离开容器

接着,按照以下指令来建立新映像档:
<格式>:
docker commit -m <此映像档的修改相关讯息> -a <指定更新的使用者讯息> <用来当做模版的容器 ID> <新的映像档名称>

sudo docker commit -m "Added json-1.5 gem" -a "Docker Beginner" 13fb70bb49f0 andy/sinatra:v2
# 成功的话,会出现 sha256 的字串
#sha256:8ddf1108bed9fb487a867f798928161552ad373c4a5a0e0fa7a7839e4db01dfc

再输入 docker images,你就会看见新建立的映像档了。

docker images
#REPOSITORY                        TAG           IMAGE ID       CREATED         SIZE
#andy/sinatra                      v2            8ddf1108bed9   9 seconds ago   473MB

<<:  Day3-自制网站卷轴(上)_CSS就能做得到

>>:  33岁转职者的前端笔记-DAY 18 练习写一个自我介绍产生器

[Day 13] SRE - 悟

关於身为SRE团队的心得 关於SRE的系列终於分享完罗~所以讲一下SRE从零星到有概念後的心得,以下...

[Day04] 空降主管的战地生存术

在一场由执行长主持的月会上,HR 念了一个同事提出的疑问:「公司对工程师的面试标准这麽高,却对管理职...

JavaScript入门 Day16_阵列2

昨天讲到了阵列,那今天要讲怎麽让阵列的资料呈现在网页上 在阵列里,第一个资料的位置不是1而是0 所以...

Day22 跟着 spinlock 旋转吧

前言 昨天讲完了最基础的 atomic的资讯,了解了 atomic可以保护某个变数的资料正确性,当有...