内容简介:Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。 从 Docker 镜像仓库获取镜像的命令是:示例,从Docker Hub 拉取 ubuntu 系统的镜像:列出已经下载到本地的镜像,使用:
获取镜像
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
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》 这本书的介绍吧!