欢迎来到魔幻小生的博客

Docker 镜像制作和发布

Docker 镜像制作

Docker 镜像有两种常用的制作方式:

  • 使用 docker commit 方式制作镜像
  • 使用 docker build 方式制作镜像

使用 docker commit 方式制作镜像

使用 docker commit 的方式制作镜像,就是我们将一个 docker 容器的状态记录下来,然后生成一个新的 docker 镜像。

docker commit 【容器ID】 【新的镜像名】

image

使用 docker build 方式制作镜像

这种方式需要我们提前配置好 Dockerfile 文件,在该文件中记录了该镜像应该以哪个镜像为基础,以及需要进行的操作。

Dockerfile 是 docker 中镜像文件的的描述文件,说的直白点就是镜像文件到底是由什么东西一步步构成的。例如我们在淘宝上买了一件商品,但是这个商品需要组装才能使用,于是卖家就给了你一张图纸,你就按照图纸一步一步的组装起来,然后就成了你所需要的样子。那么 Dockerfile 就是这张图纸,镜像文件就是你需要的商品。Dockerfile 名字可以随便命名,但是不建议你这做,还是按照规范来使用,首字母要大写。

Dockerfile 是用来构建 docker 镜像的构建文件,是由一系列命令和参数构成的脚本。构建需要三个步骤:

  1. 编写 Dockerfile 文件
  2. docker build
  3. docker run

一个 Dockerfile文件如下图所示:

image

Dockerfile 内容基础知识:

  1. 每条保留字指令都必须为大写字母且后面要跟随至少一个参数
  2. 指令按照从上到下,顺序执行
  3. # 表示注释
  4. 每条指令都会创建一个新的镜像层,并对镜像进行提交

Docker 执行 Dokcerfile 的大致流程:

  1. docker 从基础镜像运行一个容器
  2. 执行一条指令并对容器作出修改
  3. 执行类似 docker commit 的操作提交一个新的镜像层
  4. docker 再基于刚提交的镜像运行一个新容器
  5. 执行 Dockerfile 中的下一条指令直到所有指令都执行完成

下面以制作一个含有 Apache 服务的镜像为例:

  1. 新建一个目录,作为制作 Docker 镜像的目录:
mkdir -p /docker-build
  1. 创建 Dockerfile,并写入命令:
touch Dockerfile
vi Dockerfile

FROM docker.io/centos/systemd
MAINTAINER Pzz
RUN yum install -y httpd
ADD httpd.conf /etc/httpd/conf/httpd.conf
ADD index.html /var/www/html/index.html
RUN httpd
CMD echo "OK"

在上述配置中,FROM 指的是从哪个镜像开始进行制作;MAINTAINER 指定了 docker 镜像的制作者;RUN 命令后面跟一个命令,表示要在Docker镜像的制作过程中要执行的命令;ADD 命令指定了从该目录中复制到 docker 镜像中的文件;最后的 CMD 命令在一个 Dockerfile 中只能有一个,表示在镜像制作的最后要执行的命令。

我们需要提前将 Apache 服务的配置文件 httpd.conf 和主页文件 index.html 复制到本地目录下。

最后,我们执行命令,创建 Docker 镜像。

# docker build -t 【父镜像名】:【新镜像tag】 【构建镜像的目录】
docker build -t docker.io/centos/systemd:apache ./

image

image

执行完毕后,出现了我们新制作的镜像,如下所示:

image

我们打开该镜像,发现存在端口映射,如下所示:

image

我们访问该端口,结果如下:

image

可以看出,我们的Docker镜像制作成功!

Docker 镜像发布

docker 镜像的导出和导入

我们可以将 docker 镜像导出成 tar 包,然后在其他的设备上,将该tar包导入来使用镜像。

# 导出镜像
docker save <image name> > <存储路径>
# 导入镜像
docker load < <镜像tar包路径>

将 docker 镜像发布到 Dockerhub

首先在 Dockerhub 上注册账号并创建自己的仓库。

image

在 docker 服务器上登录自己的账号并发布镜像。

docker login -u 【用户名】 -p 【密码】
docker push 【镜像名】

image

posted @ 2023-06-06 13:46  魔幻小生  阅读(283)  评论(0编辑  收藏  举报