Skip to content

Dockerfile 构建镜像

约 357 字大约 1 分钟

2024-11-27

定制一个 nginx 镜像

FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

dockerfile命令

  • FROM 指定基础镜像
FROM scratch
  • COPY 复制命令
COPY 源路径 目标路径
  • RUN 执行命令 (在 docker build 阶段运行)
RUN <命令>
RUN ["可执行文件", "参数1", "参数2"]
  • ENTRYPOINT 设置容器创建时的主要命令。(不可被覆盖)
ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
  • CMD 指定容器创建时的默认命令。(可以被覆盖)
CMD <shell 命令> 
CMD ["<可执行文件或命令>","<param1>","<param2>",...] 
CMD ["<param1>","<param2>",...]  # 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数
  • ENV 环境变量 (可以通过 -e 覆盖)
ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>...
  • ARG 定义在构建过程中传递给构建器的变量,可使用 "docker build –build-arg name=value " 命令设置
ARG <参数名>[=<默认值>]
  • WORKDIR 指定工作目录
WORKDIR /app

使用 Dockerfile 创建镜像

docker build [OPTIONS] PATH | URL | -

$ sudo docker build -f Dockerfile -t myserver:v1 .
$ sudo docker build -f build/Dockerfile -t 10.0.0.100:30002/dev_test/myserver:v1 .

OPTIONS 说明:

  • -f: 指定要使用的 Dockerfile 路径
  • –build-arg=[]: 设置镜像创建时的变量
  • –tag, -t: 镜像的名字及标签,通常 name:tag

docker 登录

$ sudo docker login http://10.0.0.100:30002 -uadmin -pHarbor12345

上传镜像

$ sudo docker push 10.0.0.100:30002/dev_test/myserver:v1

配置http docker私仓

sudo vim /etc/docker/daemon.json
{
    "insecure-registry": [
        "10.0.0.100:30002"
    ]
}
sudo systemctl daemon-reload
sudo systemctl restart docker