Docker镜像使用

目录

一、前言

二、什么是Docker镜像

三、列出镜像列表

1、查看镜像列表

2、获取一个新的镜像:

3、查看镜像:

4、拖取镜像

5、创建镜像

6、更新镜像

7、构建镜像

8、设置镜像标签

四、Docker镜像使用遇到的问题及处理

五、Docker镜像使用注意点


一、前言

当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。
学习目标:
1、管理和使用本地 Docker 主机镜像
2、创建镜像

二、什么是Docker镜像

Docker镜像是Docker容器的基础,它是一个轻量级、可移植、自包含的文件,其中包含了运行应用程序所需要的所有代码、库、依赖项、配置文件和其他资源。Docker镜像提供了一种方便的方式,可以快速地部署和运行应用程序,而无需担心环境配置、应用程序依赖项和其他问题。Docker镜像可以在Docker注册表中存储和共享,这样其他人就可以使用它们来部署他们自己的应用程序。

三、列出镜像列表

1、查看镜像列表

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 镜像。

2、获取一个新的镜像:

当我们在本地主机上使用一个不存在的镜像时 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

3、查看镜像:

我们可以从 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官方发布

4、拖取镜像

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

5、创建镜像

当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
1.从已经创建的容器中更新镜像,并且提交这个镜像
2.使用 Dockerfile 指令来创建一个新的镜像

6、更新镜像

更新镜像之前,我们需要使用镜像来创建一个容器。
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:/#

7、构建镜像

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,你的应用程序应该是活的。

8、设置镜像标签

我们可以使用 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

四、Docker镜像使用遇到的问题及处理

Docker镜像使用过程中可能会遇到以下问题:

  1. 找不到镜像:在使用镜像时如果出现找不到镜像的错误,可能是因为该镜像不存在或者没有在本地下载。解决方法是先检查镜像名称是否正确,然后执行docker pull命令下载镜像。

  2. 镜像下载速度慢:有时候在下载镜像的过程中会遇到下载速度慢的问题,这可能是因为网络问题或者镜像所在的服务器距离较远。解决方法是切换到下载速度快的镜像源,并使用加速器等工具。

  3. 镜像启动失败:在启动镜像时可能会出现启动失败的情况,这可能是因为镜像中的应用程序出现了错误或者镜像本身存在问题。解决方法是检查应用程序的配置和日志,或者重新下载镜像。

  4. 镜像版本不兼容:如果在使用镜像时出现版本不兼容的问题,可能是因为镜像的版本与应用程序或其他镜像的版本不兼容。解决方法是选择合适的镜像版本或者更新应用程序或相关镜像版本。

  5. 镜像安全问题:有时候在使用镜像时会出现安全问题,例如镜像中的应用程序存在漏洞或者镜像来源不可信。解决方法是使用安全的镜像源,检查镜像的安全性,并及时更新镜像安全补丁。

总的来说,在使用Docker镜像时应该注意镜像的选择和安全性,及时更新和维护镜像,避免出现问题。

五、Docker镜像使用注意点

  1. 避免使用root用户运行容器,应该使用非特权用户。

  2. 避免在容器中保存敏感信息,如密码、密钥等。

  3. 确保镜像中只包含必要的文件和软件,减小镜像大小。

  4. 使用版本控制系统管理Dockerfile和镜像,方便管理和回滚。

  5. 为镜像添加标签和版本号,方便管理和追踪镜像的使用情况。

  6. 定期更新镜像,确保镜像中的组件和依赖都是最新的。

  7. 尽可能使用官方镜像,或者由可靠的第三方提供的镜像。

  8. 在使用私有镜像仓库时,确保有适当的访问控制和权限管理措施。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的雷神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值