Dockerfile指令中的CMD与ENTRYPOINT有何区别?

本文介绍了如何使用Dockerfile自动构建镜像,包括基本概念、步骤、常用指令如FROM、RUN、CMD等,以及RUN命令的不同格式示例。
摘要由CSDN通过智能技术生成
Dockerfile自动构建镜像

Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。打个比方,镜像相当于你开的中药,dockerfile相当于中药的配方表。

写Dockerfile的思路/步骤如下。

1、手动制作docker镜像,记录历史命令
2、根据历史命令撰写dockenfile文件
3、docker build构建docker镜像
4、测试镜像的功能

dockerfile常用指令

# FROM:指定基础镜像
# RUN:制作镜像过程中在容器内部执行的命令
# CMD:容器启动时执行的基础命令(容器启动后PID为1的进程),可以被docker run命令后面的参数替换
# ENTRYPOINT:容器启动时执行的初始命令,不能被替换。如果同时使用CMD和ENTRYPOINT,CMD命令将作为ENTRYPOINT命令的参数
# ADD:把dockerfile当前目录下的文件拷贝到容器中(自动解压tar包)
# COPY:把dockerfile当前目录下的文件拷贝到容器中(不解压tar包)
# EXPOSE:声明镜像暴露的端口

--------------------------------
WORKDIR:指定容器的默认工作目录,非必须
VOLUME:声明下文件映射挂载目录(你可以挂载我这里面哪个目录)
ENV:环境变量(比如ssh的密码,数据库的密码)
LABEL:镜像的属性标签,随便写
MAINTAINER:管理者标识

[root@docker01 ~]# docker inspect nginx:latest 
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },

RUN命令的格式

# RUN命令有以下两种格式:
1、shell格式:
RUN <命令行命令>
2、exec格式:
RUN ["可执行文件","参数1","参数2"]

# 例子
[root@docker01 ~/dockerfile]# vim Dockerfile
FROM centos:7
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo  #//也可用COPY代替
RUN curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
RUN sed -i '/aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo   #//优化,删掉阿里源里没用的。
RUN yum install -y nginx
ADD h5_games.tgz /usr/share/nginx/html
EXPOSE 80  #//可不写。容器内nginx默认是80端口
CMD ["/sbin/nginx","-g","daemon off;"]  #//注意要用双引号





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值