美文网首页
Docker 镜像制作方法

Docker 镜像制作方法

作者: 老率的IT私房菜 | 来源:发表于2021-01-27 12:46 被阅读0次

本文档介绍 Docker 镜像制作的两种方法,使用的系统是 CentOS7

Docker Image 的制作两种方法

方法 1:docker commit #保存 container 的当前状态到 image 后,然后生成对应的 image

方法 2:docker build #使用 Dockerfile 文件自动化制作 image

方法一:docker commit

创建一个安装好 apache 工具的容器镜像

[root@Docker ~]# docker images

REPOSITORY          TAG                IMAGE ID            CREATED            SIZE

centos              latest              470671670cac        4 months ago        237MB

[root@Docker ~]# docker ps

CONTAINER ID        IMAGE              COMMAND            CREATED            STATUS              PORTS              NAMES

[root@Docker ~]# docker run -it centos:latest /bin/bash

[root@1b96e68a3cce /]#

[root@1b96e68a3cce /]# yum -y install httpd #在 container 中安装 apache 软件包

[root@1b96e68a3cce /]# exit

查看 images 列表

[root@Docker ~]# docker images

REPOSITORY          TAG                IMAGE ID            CREATED            SIZE

centos              latest              470671670cac        4 months ago        237MB

根据容器当前状态做一个 image 镜像:创建一个安装了 apache 工具的 centos 镜像

语法: docker commit "container 的 ID" 或 "image_name"

查看容器 ID

[root@Docker ~]# docker ps -a

CONTAINER ID        IMAGE              COMMAND                  CREATED            STATUS                        PORTS              NAMES

1b96e68a3cce        centos:latest      "/bin/bash"              3 minutes ago      Exited (0) 2 minutes ago                          awesome_hypatia

607752360adf        centos:latest      "/bin/bash -c 'while…"  18 minutes ago      Exited (137) 12 minutes ago                      brave_fermi

0a297ff99af8        centos:latest      "/bin/bash"              22 minutes ago      Exited (1) 20 minutes ago                        ecstatic_yonath

efb4af688330        centos:latest      "/bin/bash"              24 minutes ago      Exited (0) 23 minutes ago                        epic_mcclintock

[root@Docker ~]# docker commit 1b96e68a3cce centos:apache

sha256:b8822ec8a7bbb325793e7908e355180be82a49481cff197661fb5d0da5872e88

[root@Docker ~]# docker images

REPOSITORY          TAG                IMAGE ID            CREATED            SIZE

centos              apache              b8822ec8a7bb        9 seconds ago      280MB

centos              latest              470671670cac        4 months ago        237MB

使用新创建的 centos:apache 镜像,生成一个容器实例

[root@Docker ~]# docker run -it centos:apache /bin/bash

[root@e4c295d27581 /]# rpm -qa httpd

httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64

看到httpd软件名称说明基于 apache 镜像的容器创建成功

方法二:通过:docker build 创建一个基于 centos 的 httpd web 服务器镜像

使用 docker build 创建镜像时,需要使用 Dockerfile 文件自动化制作 image 镜像

Dockerfile 有点像源码编译时./configure 后产生的 Makefile

1、创建工作目录

[root@Docker ~]# mkdir /docker-build

[root@Docker ~]# cd /docker-build

[root@Docker docker-build]# touch Dockerfile

[root@Docker docker-build]# ls

Dockerfile

注: make 自动化编译时需要 Makefile 文件,自动化创建 docker 镜像时,需要 Dockerfile

2、编辑 Dockerfile

Dockerfile 用来创建一个自定义的 image,包含了用户挃定的软件依赖等。[root@Docker docker-build ]# vim DockerfileFROM centos:latestMAINTAINERRUN yum -y install httpd

ADD start.sh /usr/local/bin/start.sh

ADD index.html /var/www/html/index.html

CMD echo hello world

注释

FROM centos:latest # FROM 基于哪个镜像MAINTAINER# MAINTAINER 镜像创建者RUN yum -y install httpd #RUN 安装软件用ADD start.sh /usr/local/bin/start.shADD index.html /var/www/html/index.html# ADD 将文件拷贝到新产生的镜像的文件系统对应的路径。所有拷贝到新镜像中的文件和文件夹权限为 0755,uid 和 gid 为 0CMD echo hello world #container 启动时执行的命令或启动服务,但是一个 Dockerfile 中只能有一条 CMD命令,有多条则另执行最后一条 CMD

3、创建 start.sh 脚本启动 httpd 服务和 apache 默认首页 index.html 文件

[root@Docker docker-build ]# echo "#!/bin/bash" >> start.sh

[root@Docker docker-build ]# echo "/usr/sbin/httpd -DFOREGROUND" >> start.sh

注:/usr/sbin/httpd -DFOREGROUND 相当于执行了 systemctl start httpd

[root@Docker docker-build ]# chmod a+x start.sh

创建 index.html

[root@Docker docker-build ]# echo "docker image build  test from jaking" > index.html

4、使用命令 build 来创建新的 image

语法:docker build -t 父镜像名:镜像的 tag Dockerfile 文件所在路径

-t :表示 tag,镜像名

例:使用命令 docker build 来创建新的 image,并命名为 centos:httpd

[root@Docker docker-build]# lsDockerfile  index.html  start.sh[root@Docker docker-build]# docker build -t centos:httpd ./# 注: ./ 表示当前目录,另外你的当前目录下要包含 DockerfileSending build context to Docker daemon  4.096kBStep 1/5 : FROM centos:latest ---> 470671670cacStep 2/5 : MAINTAINER ---> Running in 0180810d2ab3

Removing intermediate container 0180810d2ab3

---> 5b9af0184bcf

Step 3/5 : RUN yum -y install httpd

---> Running in 8f5c114649ed

CentOS-8 - AppStream                            228 kB/s | 7.0 MB    00:31   

CentOS-8 - Base                                547 kB/s | 2.2 MB    00:04   

CentOS-8 - Extras                              431  B/s | 5.9 kB    00:14   

Dependencies resolved.

================================================================================

Package          Arch  Version                              Repo      Size

================================================================================

Installing:

httpd            x86_64 2.4.37-16.module_el8.1.0+256+ae790463 AppStream 1.7 M

Installing dependencies:

apr              x86_64 1.6.3-9.el8                          AppStream 125 k

apr-util          x86_64 1.6.1-6.el8                          AppStream 105 k

centos-logos-httpd

                  noarch 80.5-2.el8                            AppStream  24 k

...省略部分输出信息...               

Complete!

Removing intermediate container 8f5c114649ed

---> 040b5f229962

Step 4/5 : ADD start.sh /usr/local/bin/start.sh

---> 11a106005031

Step 5/5 : ADD index.html /var/www/html/index.html

---> 85b4a3657ced

Successfully built 85b4a3657ced

Successfully tagged centos:httpd

查看 images 列表

[root@Docker docker-build]# docker images

REPOSITORY          TAG                IMAGE ID            CREATED            SIZE

centos              httpd              85b4a3657ced        45 seconds ago      280MB

centos              apache              b8822ec8a7bb        20 minutes ago      280MB

centos              latest              470671670cac        4 months ago        237MB

# 注:docker 镜像=应用/程序+库

运行新生成的镜像

[root@Docker docker-build]# docker run -it centos:httpd /bin/bash

[root@1188a43a4585 /]# ls

bin  etc  lib    lost+found  mnt  proc  run  srv  tmp  var

dev  home  lib64  media      opt  root  sbin  sys  usr

[root@1188a43a4585 /]# rpm -qa httpd

httpd-2.4.37-16.module_el8.1.0+256+ae790463.x86_64

[root@1188a43a4585 /]# exit

exit

[root@Docker docker-build]#

总结

以上就是 Docker 镜像制作方法的介绍,希望能给大家带来帮助。

相关文章

  • docker 镜像制作方法

    Docker Image的制作两种方法 方法1 docker commit # 保存 container 的当前状...

  • Docker 镜像制作方法

    本文档介绍 Docker 镜像制作的两种方法,使用的系统是CentOS[https://www.linuxprob...

  • Docker基础操作

    Docker部署 Docker安装 镜像加速 Docker 基础命令 Docker镜像管理 搜索镜像docker ...

  • docker常用操作

    下载docker镜像 查看docker镜像 搜索docker镜像 开启docker容器 查看全部docker实例 ...

  • Docker 常用命令及参数

    Docker镜像命令 docker 镜像检索 docker search 镜像名docker search red...

  • dock学习笔记

    从镜像仓库拉取镜像 docker pull (镜像名称) 查看docker镜像 docker images 从镜像...

  • Docker 常用命令总结

    Docker镜像管理 搜索镜像:docker search 获取镜像:docker pull 查看镜像:docke...

  • 大觅网

    Docker镜像操作查看镜像:docker images搜索镜像:docker search 镜像关键字拉取镜像:...

  • Docker基本操作

    1. 镜像操作 搜索镜像:docker search 镜像名 拉取镜像docker pull 镜像名docker ...

  • Docker 基础 - 1

    镜像 获取镜像 docker pull 查看镜像信息 docker images docker inspect ...

网友评论

      本文标题:Docker 镜像制作方法

      本文链接:https://www.haomeiwen.com/subject/jyxazktx.html