详解 docker 镜像制作的两种方式

概要

制作Docker镜像一般有2种方法:

  1. 通过Dockerfile,完成镜像的创建
  2. 使用仓库中已有的镜像,安装自己使用的软件环境后完成新镜像创建

docker 常用命令

  1. docker build: 用于构建 Docker 镜像。该命令可以从 Dockerfile 构建镜像,也可以从 tar 包构建镜像。
  2. docker tag: 用于给镜像打上标签。该命令可以将镜像命名为指定的名称和标签,以便于在推送和使用镜像时进行识别和管理。
  3. docker push: 用于将本地的镜像推送到 Docker Hub 或其他 Docker 仓库。该命令需要先使用 docker login 命令进行登录认证。
  4. docker pull: 用于从 Docker Hub 或其他 Docker 仓库拉取镜像到本地计算机。该命令可以使用镜像名称和标签进行定位和拉取。
  5. docker history: 用于查看 Docker 镜像的历史记录。该命令可以查看镜像的创建过程、每一层的命令和大小等信息。
  6. docker inspect: 用于查看 Docker 容器和镜像的详细信息。该命令可以查看容器和镜像的元数据、配置、网络、存储等信息。
  7. docker save: 用于将 Docker 镜像保存为 tar 包。该命令可以将本地的镜像打包为 tar 包,以便于在其他计算机上部署和使用。
  8. docker load: 用于从 tar 包恢复 Docker 镜像。该命令可以将 tar 包中的 Docker 镜像恢复为本地镜像,以便于在本地计算机上使用。

通过Dockerfile制作镜像

制作 Docker 镜像的过程通常涉及编写一个 Dockerfile,它是一个文本文件,包含了一系列的指令,用来定义如何从一个基础镜像构建一个新的镜像。编写了 Dockerfile,就可以使用 docker build 命令来创建镜像。

以下是制作 Docker 镜像的基本步骤:

  1. 创建一个 Dockerfile

    在你的项目根目录下创建一个名为 Dockerfile 的文件(没有扩展名)。

  2. 定义基础镜像

    使用 FROM 指令开始你的 Dockerfile 来定义基础镜像。例如你正在创建一个 Python 应用的镜像,你可能会从官方的 Python 镜像开始:

    Dockerfile 复制代码
    FROM python:3.8
  3. 设置工作目录

    使用 WORKDIR 指令设置容器内部的工作目录,所有后续的 RUNCOPYCMD 指令都会在这个目录下执行。

    Dockerfile 复制代码
    WORKDIR /app
  4. 复制文件

    使用 COPY 指令将本地文件复制到镜像中。通常,你会复制应用代码和依赖文件(如 requirements.txt)。

    Dockerfile 复制代码
    COPY . /app
  5. 安装依赖

    使用 RUN 指令安装应用所需的依赖。对于 Python 应用,你可能会需要运行 pip install

    Dockerfile 复制代码
    RUN pip install --no-cache-dir -r requirements.txt
  6. 配置启动命令

    使用 CMD 指令设置容器启动时默认执行的命令。

    Dockerfile 复制代码
    CMD ["python", "./your-app.py"]
  7. 构建镜像

    打开终端或命令行,导航到包含 Dockerfile 的目录,运行 docker build 命令,并为你的镜像设置一个标签(tag)。

    bash 复制代码
    docker build -t your-image-name:tag .

    其中,. 表示当前目录,your-image-name:tag 是你给镜像设定的名字和标签。

  8. 运行容器

    构建完成后,你可以使用 docker run 命令来启动一个基于你新镜像的容器。

    bash 复制代码
    docker run -d -p 5000:5000 your-image-name:tag

    这里 -d 表示后台运行,-p 5000:5000 表示将容器的 5000 端口映射到主机的 5000 端口。

在容器中安装软件制作新镜像

要在现有的 Docker 镜像基础上安装额外的软件,并创建一个新的镜像,你可以执行以下步骤:

  1. 启动一个容器

    从现有的镜像启动一个容器。这个镜像可以是你从 Docker Hub 或其他容器仓库中拉取的,也可以是你本地已有的镜像。使用 docker run 命令启动容器,并且进入交互式模式:

    sh 复制代码
    docker run -it --name my_container existing_image_name bash

    其中 existing_image_name 是你要使用的现有镜像的名称,my_container 是新容器的名称,bash 是启动容器后运行的命令,它将提供一个 shell 给你。

  2. 安装软件

    在容器的命令行中,使用包管理器安装你需要的软件。对于基于 Debian 或 Ubuntu 的系统,你通常会使用 apt;对于基于 CentOS 的系统,你会使用 yum。例如:

    sh 复制代码
    apt update
    apt install -y your_software

    其中 your_software 是你想要安装的软件包名。

  3. 退出容器

    安装完成后,你可以通过键入 exit 或按 Ctrl+D 来退出容器。

  4. 创建新镜像

    使用 docker commit 命令从修改过的容器中创建一个新的镜像:

    sh 复制代码
    docker commit my_container new_image_name

    其中 my_container 是你之前创建的容器的名称,new_image_name 是你要创建的新镜像的名称。

  5. 测试新镜像

    启动一个基于新镜像的容器来测试你的软件环境是否如预期工作:

    sh 复制代码
    docker run -it new_image_name bash

    现在你可以运行测试命令来确认软件包已正确安装。

  6. 推送镜像到仓库(可选)

    如果你想要将制作好的镜像推送到 Docker Hub 或其他 Docker 镜像仓库,你需要使用 docker tag 来标记镜像,并使用 docker push 来推送:

    sh 复制代码
    docker tag new_image_name your_dockerhub_username/new_image_name:tag
    docker push your_dockerhub_username/new_image_name:tag

    确保你已登录到 Docker Hub(或其他仓库),并将 your_dockerhub_username 替换为你的用户名,tag 替换为你的镜像标签。

以上就是制作 Docker 镜像的基本步骤。制作镜像时,可能需要根据你的应用需求添加额外的配置,如环境变量、数据卷、网络配置等。请参考官方 Docker 文档以获取更多详细信息和最佳实践。

相关推荐
工一木子8 分钟前
【Java项目脚手架系列】第七篇:Spring Boot + Redis项目脚手架
java·spring boot·redis
哞哞不熬夜20 分钟前
JavaEE--初识网络
java·网络·java-ee
LunarCod27 分钟前
Ubuntu使用Docker搭建SonarQube企业版(含破解方法)
linux·运维·服务器·ubuntu·docker·开源·sonarqube
等等54332 分钟前
Java EE初阶——wait 和 notify
java·开发语言
什么半岛铁盒44 分钟前
Linux信号的保存
linux·运维·网络
API小爬虫1 小时前
淘宝按图搜索商品(拍立淘)Java 爬虫实战指南
java·爬虫·图搜索算法
lyrhhhhhhhh1 小时前
Spring 框架 JDBC 模板技术详解
java·数据库·spring
noravinsc1 小时前
国产化中间件 替换 nginx
运维·nginx·中间件
惜.己1 小时前
Linux常用命令(十四)
linux·运维·服务器
亚林瓜子2 小时前
AWS Elastic Beanstalk控制台部署Spring极简工程
java·spring·云计算·aws·eb