如何构建一个docker镜像

61 阅读2分钟
  1. **前置学习 **

dockerfile指令:RUN/CMD/ENTRYPOINT的区别

	RUN主要用于在容器中安装软件,操作文件和文件夹等等;
	CMD/ENTRYPOINT主要用于启动容器。

	CMD命令有两个特点:
	1. 多条CMD命令只会执行最后一条;
	2. 当运行容器时,指令的最后指定相关参数,则原来应执行的CMD命令将会被覆盖掉而不执行。
	ENTRYPOINT命令:
	3. 多条指令也只会执行最后一条;
	4. 运行容器时指令的最后指定相关参数,则ENTRYPOINT命令不会被覆盖掉仍然会执行。
	
	因此,这两条命令在使用范围上也有所不同:
	5. 由于CMD命令可以被`docker run`命令指定参数进行覆盖执行,因此可以用来设置默认启动命令。
	6. ENTRYPOINT命令一定会执行,因此常常用来启动应用程序或服务,最好不要使用CMD命令。

  1. 编写 Dockerfile: Dockerfile 是一个文本文件,其中包含了一系列指令,用来定义如何构建 Docker 镜像。以下是一个简单的 Dockerfile 示例:

    # 使用官方的 Python 运行时作为父镜像
    FROM python:3.8-slim
    
    # 设置工作目录
    WORKDIR /app
    
    # 将当前目录内容复制到位于 /app 中的容器中
    COPY . /app
    
    # 在容器启动时运行 app.py
    CMD ["python", "app.py"]
    

    上述 Dockerfile 从一个 Python 3.8 镜像开始,设置了工作目录,复制了应用程序文件,安装了依赖,暴露了端口,并指定了启动命令。

  2. 编写app.py : 在目录下新建一个app.py文件,并输入以下内容。

import os
print("this is my hello-world")
  1. 构建镜像: 在 Dockerfile 所在的目录下,运行 docker build 命令来构建你的镜像。例如:

    bash复制代码
    docker build -t gearicy/hello:tag0 .
    

    其中,-t 选项用于标记镜像,your-username/your-image-name:tag 是你给镜像指定的名称和标签,. 指的是 Dockerfile 所在的当前目录。

  2. 测试镜像: 构建完成后,你可以通过运行 docker run 命令来测试新构建的镜像:

    bash复制代码
    docker run your-username/your-image-name:tag
    

    这会启动一个容器实例,并将本地的 4000 端口映射到容器的 80 端口。

  3. 发布镜像: 如果你想将你的镜像分享给其他人或者部署到生产环境,你可以将它推送到 Docker Hub 或其他容器镜像仓库:

    bash复制代码
    docker push your-username/your-image-name:tag
    

    在推送之前,你可能需要登录到 Docker Hub:

    bash复制代码
    docker login
    

    输入你的 Docker Hub 用户名和密码后,就可以推送镜像了。

通过以上步骤,你就可以构建自己的 Docker 镜像并将其部署或分享。记得在构建镜像时要确保遵循最佳实践,比如最小化镜像大小、确保安全性和合理管理依赖等。