欢迎访问宙启技术站
智能推送

docker如何自定义镜像

发布时间:2023-05-15 21:14:30

Docker 自定义镜像是将现有的Docker镜像进行修改和定制,以便按需求进行扩展和配置。而且它允许用户将所需的软件和配置方案引入到镜像中,从而使得容器更加灵活和可控。下面我们讨论一下如何自定义Docker镜像。

1. 准备工作

在开始构建Docker镜像之前,我们需要在本地机器上安装Docker。我们可以在Docker官网上根据具体操作系统下载相应的安装包,然后按照安装指南进行操作。安装成功后,我们可以运行以下命令进行验证:

docker --version

输出如下内容则表示安装成功:

Docker version 20.10.7, build f0df350

2. 创建Dockerfile

要构建自定义Docker镜像,我们需要创建Dockerfile文件。Dockerfile是一个文本文件,用于定义一个镜像的构建流程。该文件包含了一系列的指令,用于指定镜像的基础图层、安装软件、拷贝文件和配置环境变量等操作。

首先,我们要创建一个目录,用于存放我们的Dockerfile。例如,在/home/user/docker/myimage目录下创建Dockerfile文件:

mkdir -p /home/user/docker/myimage
cd /home/user/docker/myimage
touch Dockerfile

然后,在编辑器中打开Dockerfile文件,并添加以下内容:

FROM ubuntu:latest
MAINTAINER user <user@example.com>
RUN apt-get update && apt-get install -y nginx
COPY index.html /var/www/html/
EXPOSE 80/tcp
CMD ["nginx","-g","daemon off;"]

这个Dockerfile的作用是:

- 从 Docker Hub 上下载最新的 Ubuntu 镜像作为基础镜像

- 设置维护者信息

- 更新APT源和安装Nginx

- 拷贝一个自定义的index.html文件到Nginx的默认根目录

- 暴露容器80端口

- 设置容器启动时执行的命令

3. 构建镜像

在编辑完 Dockerfile 文件后,我们就可以使用 docker build 命令来构建自定义镜像了。在命令行中,我们切换到 Dockerfile 所在的目录,然后执行以下命令:

docker build -t mydocker/myimage:1.0 .

其中:

- -t 参数用来为镜像指定一个名称和标签(格式为 镜像仓库/镜像名称:标签号)

- .(点)表示当前目录是构建上下文路径,用于寻找 Dockerfile 文件和其他资源。

构建命令执行完成后,可以使用 docker images 命令来查看新构建的镜像:

docker images

输出如下内容:

REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
mydocker/myimage       1.0                 343450f7494b        2 minutes ago       130MB
ubuntu                 latest              1318b700e415        2 days ago          72.8MB

4. 运行容器

现在,我们已经成功构建了自定义 Docker 镜像。接下来,我们可以把它运行起来,通过浏览器查看 Nginx 是否正常工作。

docker run -d --name mycontainer -p 80:80 mydocker/myimage:1.0

其中:

- -d 表示所创建的容器在后台运行

- --name 指定容器名称为 mycontainer

- -p 表示映射容器的端口80到宿主机的8080端口上(即 -p 宿主机端口:容器端口)

- mydocker/myimage:1.0 表示所使用的镜像名称和标签号

命令执行完成后,可以使用 docker ps 命令来查询运行中的容器:

docker ps

输出如下内容:

CONTAINER ID         IMAGE                      COMMAND                  CREATED             STATUS              PORTS                NAMES
d589a6d0f484         mydocker/myimage:1.0       "nginx -g 'daemon of…"   6 seconds ago       Up 5 seconds        0.0.0.0:80->80/tcp   mycontainer

5. 访问 Nginx

现在,我们可以通过Web浏览器访问宿主机IP地址+端口号,例如http://localhost:8080/,就可以看到Nginx默认页面以及自定义的index.html页面了。

至此,我们已经成功创建了一个自定义 Docker 镜像,并通过它创建了一个运行中的 Nginx 容器。虽然这个例子非常简单,但它展示了 Docker 镜像如何可以高效、快捷地完成软件的发布、部署和更新。