0
点赞
收藏
分享

微信扫一扫

Docker镜像使用


当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

学习目标:

1、管理和使用本地 Docker 主机镜像

2、创建镜像

一、列出镜像列表

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

dockerfile latest ea0ac9dccdb8 16 hours ago 65.8MB

redis <none> caaeda72bf8f 5 days ago 27.8MB

postgres 9.4 ccd088148f5d 13 days ago 233MB

ubuntu latest 113a43faa138 2 weeks ago 81.2MB

nginx latest cd5239a0906a 2 weeks ago 109MB

r-base latest 3cb19d246267

各项说明:

REPOSITORY:表示镜像的仓库源

TAG:镜像的标签

IMAGE ID:镜像ID

CREATED:镜像创建时间

SIZE:镜像大小

同一个仓库中可以有多个TAG,代表这个仓库源的不同版本,用TAG来定义不同的镜像

如果要使用版本为14.04的ubuntu系统镜像来运行容器时,命令如下:

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker run -t -i ubuntu:15.10 /bin/bash

root@d482d4e4d741:/#

如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。

获取一个新的镜像:

当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker pull ubuntu:13.10

13.10: Pulling from library/ubuntu

a3ed95caeb02: Pull complete

0d8710fc57fd: Pull complete

5037c5cd623d: Pull complete

83b53423b49f: Pull complete

e9e8bd3b94ab: Pull complete

7db00e6b6e5e: Pull complete

Digest: sha256:403105e61e2d540187da20d837b6a6e92efc3eb4337da9c04c191fb5e28c44dc

Status: Downloaded newer image for ubuntu:13.10

查看镜像:

我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/

我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker search httpd

NAME DESCRIPTION STARS OFFICIAL AUTOMATED

httpd The Apache HTTP Server Project 1777 [OK]

hypriot/rpi-busybox-httpd Raspberry Pi compatible Docker Image with a … 41

centos/httpd 18 [OK]

NAME:镜像仓库源的名称

DESCRIPTION:镜像的描述

OFFICIAL:是否docker官方发布

拖取镜像

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker pull httpd

Using default tag: latest

latest: Pulling from library/httpd

3d77ce4481b1: Pull complete

73674f4d9403: Pull complete

d266646f40bd: Pull complete

ce7b0dda0c9f: Pull complete

01729050d692: Pull complete

014246127c67: Pull complete

7cd2e04cf570: Pull complete

Digest: sha256:d36c131842eca97725c73146009ad0e29e99a9069eec742f079b6f0298950dcf

Status: Downloaded newer image for httpd:latest

下载完成后,使用这个镜像:

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker run httpd

创建镜像

当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

1.从已经创建的容器中更新镜像,并且提交这个镜像

2.使用 Dockerfile 指令来创建一个新的镜像

更新镜像

更新镜像之前,我们需要使用镜像来创建一个容器。

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker run -t -i ubuntu:15.10 /bin/bash

在运行的容器内使用 apt-get update 命令进行更新。

root@fc95226b1483:/#apt-get update

此时ID为fc95226b1483的容器,是按我们需求更改的容器。我们可以通过命令docker commit来提交容器副本

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker commit -m "has update" -a="leiyuxing" fc95226b1483 leiyuxing/ubuntu:v2

sha256:b1375bd9d36449320dba9912127a4c6040b2be81354e6d7c6bb895d79af51097

各个参数说明:

-m:提交的描述信息

-a:指定镜像作者

e218edb10161:容器ID

runoob/ubuntu:v2:指定要创建的目标镜像名

我们可以使用 docker images 命令来查看我们的新镜像 leiyuxing/ubuntu:v2:

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

leiyuxing/ubuntu v2 b1375bd9d364

使用我们的新镜像leiyuxing/ubuntu来启动一个容器

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker run -t -i leiyuxing/ubuntu:v2 /bin/bash

root@3e077615e849:/#

构建镜像

leiyuxingdeMacBook-Pro:flask-app leiyuxing$ vim Dockerfile

# our base image

FROM alpine:3.5

# Install python and pip

RUN apk add --update py2-pip

# upgrade pip

RUN pip install --upgrade pip

# install Python modules needed by the Python app

COPY requirements.txt /usr/src/app/

RUN pip install --no-cache-dir -r /usr/src/app/requirements.txt

# copy files required for the app to run

COPY app.py /usr/src/app/

COPY templates/index.html /usr/src/app/templates/

# tell the port number the container should expose

EXPOSE 5000

CMD ["python", "/usr/src/app/app.py"]

每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。

第一条FROM,指定使用哪个镜像源

RUN 指令告诉docker 在镜像内执行命令,安装了什么。。。

然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像。

leiyuxingdeMacBook-Pro:flask-app leiyuxing$ docker build -t leiyuxing/alpine:3.5 .

Sending build context to Docker daemon 15.36kB

Step 1/9 : FROM alpine:3.5

---> 6c6084ed97e5

Step 2/9 : RUN apk add --update py2-pip

---> Using cache

---> bbc79f3d4f60

Step 3/9 : RUN pip install --upgrade pip

---> Using cache

---> 82a3c366b985

参数说明:

-t :指定要创建的目标镜像名

. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

使用docker images 查看创建的镜像已经在列表中存在,镜像ID为ea0ac9dccdb8

leiyuxingdeMacBook-Pro:flask-app leiyuxing$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

leiyuxing/alpine 3.5 ea0ac9dccdb8 17 hours ago 65.8MB

leiyuxingdeMacBook-Pro:flask-app leiyuxing$ docker run -p 8888:5000 --name alpine leiyuxing/alpine:3.5

* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

172.17.0.1 - - [22/Jun/2018 03:33:55] "GET / HTTP/1.1" 200 -

前往http://localhost:8888,你的应用程序应该是活的。

设置镜像标签

我们可以使用 docker tag 命令,为镜像添加一个新的标签。

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker tag ea0ac9dccdb8 leiyuxing/alpine:picture

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

leiyuxing/alpine 3.5 ea0ac9dccdb8 18 hours ago 65.8MB

leiyuxing/alpine picture ea0ac9dccdb8 18 hours ago



举报

相关推荐

0 条评论