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 基本操作-镜像篇(上)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

组合数学

组合数学

(美)Richard A. Brualdi / 冯速 等 / 机械工业出版社 / 2012-5 / 69.00元

本书是系统阐述组合数学基础、理论、方法和实例的优秀教材,出版三十多年来多次改版,被MIT、哥伦比亚大学、UIUC、威斯康星大学等众多国外高校采用,对国内外组合数学教学产生了较大影响,也是相关学科的主要参考文献之一。 本书侧重于组合数学的概念和思想,包括鸽巢原理、计数技术、排列与组合、P條ya计数法、二项式系数、容斥原理、生成函数和递推关系以及组合结构(匹配、试验设计、图)等,深入浅出地表达了......一起来看看 《组合数学》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

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

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具