Docker 基本操作-镜像篇(上)

栏目: 编程工具 · 发布时间: 5年前

内容简介:Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。 从 Docker 镜像仓库获取镜像的命令是:示例,从Docker Hub 拉取 ubuntu 系统的镜像:列出已经下载到本地的镜像,使用:
Docker 镜像基本操作介绍。

获取镜像

Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。 从 Docker 镜像仓库获取镜像的命令是:

$ docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
--all-tags , -a
--disable-content-trust
--platform

示例,从Docker Hub 拉取 ubuntu 系统的镜像:

root@iZwz96uyro861qckgz89ljZ:~# docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
84ed7d2f608f: Pull complete 
be2bf1c4a48d: Pull complete 
a5bdc6303093: Pull complete 
e9055237d68d: Pull complete 
Digest: sha256:868fd30a0e47b8d8ac485df174795b5e2fe8a6c8f056cc707b232d65b8a1ab68
Status: Downloaded newer image for ubuntu:latest

列出镜像

列出已经下载到本地的镜像,使用:

$ docker image ls

或者:

$ docker images
--all, -a
--digests
--filter, -f
--format
--no-trunc
--quiet, -q

列表包含了 仓库名标签镜像 ID创建时间 以及 所占用的空间

示例:

root@iZwz96uyro861qckgz89ljZ:~# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        3 weeks ago         1.84kB
ubuntu              latest              1d9c17228a9e        3 weeks ago         86.7MB
root@iZwz96uyro861qckgz89ljZ:~# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        3 weeks ago         1.84kB
ubuntu              latest              1d9c17228a9e        3 weeks ago         86.7MB

运行镜像

镜像是静态的定义,容器是镜像运行时的实体。这里称之为运行镜像其实是不合理的,因为只有容器才能说是运行。但是,启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态的容器重新启动。这里要说的就是基于镜像来启动容器:

$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Docker run命名的具体使用将在后续的博客中进行详细说明。这里给出一个简单的示例,通过运行 ubuntu 容器输出 Hello world

root@iZwz96uyro861qckgz89ljZ:~/docker# docker run ubuntu /bin/echo "Hello world"
Hello world

删除本地镜像

删除本地的镜像,可以使用 :

$ docker image rm [选项] <镜像1> [<镜像2> ...]

其中, <镜像> 可以是 镜像短 ID镜像长 ID镜像名 或者 镜像摘要

--force , -f
--no-prune
root@iZwz96uyro861qckgz89ljZ:~# docker image rm ubuntu
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:868fd30a0e47b8d8ac485df174795b5e2fe8a6c8f056cc707b232d65b8a1ab68
Deleted: sha256:1d9c17228a9e80a0a23927f24f3cf17d012cf0bb3eae5e3541a8c6987ab9bd5a
Deleted: sha256:3288cd6e6e7d42bcb4a74121b412c42a11f96da52685e42dbf9de6a747a55c6b
Deleted: sha256:b1636589630239bdb9153f95ac564bcd2afd9202aaf8511cbf5a9a37e03daf35
Deleted: sha256:043f492f40c539cfe7cee4cb8aae00ed1d5b19e864fbe6ea35ec92a2333bacc4
Deleted: sha256:2fb7bfc6145d0ad40334f1802707c2e2390bdcfc16ca636d9ed8a56c1101f5b9

创建镜像

在运行着的容器的基础上生成镜像:

$ docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a
-c
-m
-p

示例,将容器 9fbbb230909a 保存为新的镜像,并添加提交人信息和说明信息:

root@iZwz96uyro861qckgz89ljZ:~/docker# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
9fbbb230909a        ubuntu              "/bin/bash -c 'while…"   23 minutes ago      Up 23 minutes                           admiring_chatterjee
root@iZwz96uyro861qckgz89ljZ:~/docker# docker commit -a "fanzhenyu" -m "my ubuntu" 9fbbb230909a ubuntu:my
sha256:fe0e9216b2dd575dff6b5521616b55ce996fdb89fd893ba9e80a8a671f6acc2d
root@iZwz96uyro861qckgz89ljZ:~/docker# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              my                  fe0e9216b2dd        13 seconds ago      87.5MB
ubuntu              latest              20bb25d32758        4 days ago          87.5MB

构建镜像也可以通过:

$ docker image build [OPTIONS] PATH | URL | -

或:

$ docker build [OPTIONS] PATH | URL | -

使用 Dockerfiles 来实现。Dockerfile 是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

示例,以定制 nginx 镜像为例,Dockerfile 的内容如下:

FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

在 Dockerfile 文件所在目录执行:

root@iZwz96uyro861qckgz89ljZ:~/docker# docker image build -t nginx:my .
Sending build context to Docker daemon  90.01MB
Step 1/2 : FROM nginx
latest: Pulling from library/nginx
5e6ec7f28fb7: Pull complete 
ab804f9bbcbe: Pull complete 
052b395f16bc: Pull complete 
Digest: sha256:56bcd35e8433343dbae0484ed5b740843dd8bff9479400990f251c13bbb94763
Status: Downloaded newer image for nginx:latest
---> 42b4762643dc
Step 2/2 : RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
---> Running in da558d0a335d
Removing intermediate container da558d0a335d
---> b6cca0cd24a1
Successfully built b6cca0cd24a1
Successfully tagged nginx:my

特别注意命令最后的 . 符号,这个点一定要有,否则会报错。这里的 . 是在指定上下文路径 。

当构建的时候,用户会指定构建镜像上下文的路径, docker build 命令得知这个路径后,会将路径下的所有内容打包,然后上传给 Docker 引擎。这样Docker 引擎收到这个上下文包后,展开就会获得构建镜像所需的一切文件。

导入和导出镜像

导出镜像,将一个或多个镜像保存到tar存档(默认情况下流式传输到标准输出):

$ docker save [OPTIONS] IMAGE [IMAGE...]

或:

$ docker image save [OPTIONS] IMAGE [IMAGE...]
  • 选项 --output , -o ,输出到的文件。

示例,导出 ubuntu 镜像为 tar 文件:

root@iZwz96uyro861qckgz89ljZ:~/docker# docker save -o ubuntu.tar ubuntu
root@iZwz96uyro861qckgz89ljZ:~/docker# ls -lh
total 86M
-rw------- 1 root root 86M Jan 27 10:21 ubuntu.tar

导入镜像,从tar存档或标准输入加载镜像:

$ docker image load [OPTIONS]
--input , -i
--quiet , -q

示例,导入刚刚导出的 ubuntu 镜像:

root@iZwz96uyro861qckgz89ljZ:~/docker# docker load -i ubuntu.tar
adcb570ae9ac: Loading layer [==================================================>]  89.95MB/89.95MB
7604c8714555: Loading layer [==================================================>]  15.87kB/15.87kB
9e9d3c3a7458: Loading layer [==================================================>]  11.26kB/11.26kB
27a216ffe825: Loading layer [==================================================>]  3.072kB/3.072kB
Loaded image: ubuntu:latest

以上所述就是小编给大家介绍的《Docker 基本操作-镜像篇(上)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Rework

Rework

Jason Fried、David Heinemeier Hansson / Crown Business / 2010-3-9 / USD 22.00

"Jason Fried and David Hansson follow their own advice in REWORK, laying bare the surprising philosophies at the core of 37signals' success and inspiring us to put them into practice. There's no jarg......一起来看看 《Rework》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具