FROM 指定基础镜像
MAINTAINER 指定维护者的信息,可以没有
RUN 你想让它干啥(在命令前面加上RUN即可)
ADD 添加宿主机的文件到容器内
COPY 复制文件
WORKDIR 设置当前工作目录
VOLUME 设置卷,挂在主机目录
EXPOSE 指定对外映射端口
CMD 指定容器启动后要干的事情
注意:
ADD相比于COPY命令,多了一些功能:
1. 源文件是一个URL,此时docker引擎会下载该链接,放入目标路径,且权限设置为600
2. 源文件是一个URL,且是一个压缩包,不会自动解压
3. 源文件是一个压缩包,且是gzip, bzip2, xz, tar情况,ADD指令会自动解压缩该文件到目标路径
COPY指令能够保留源文件的元数据,如权限,访问时间等等
CMD ["参数1", "参数2"] # 注意是双引号
在指定了entrypoint指令后,用CMD指定具体的参数,docker不是虚拟机,是宿主机的一个进程,所以在程序启动的时候需要指定运行参数,这就是CMD指令的作用
CMD ["/bin/bash"]
CMD ["cat", "/etc/os-relaese"]
ENTRYPOINT 和run指令一样,都是在指定容器启动程序以及参数,当指定了ENTRYPOINT之后,CMD指令的语义就有了变化,是把CMD的内容作为参数传递给ENTRYPONINT指令
ENTRYPOINT ["curl", "-s", "http://ipinfo.io/ip"]
启动容器是可以携带-I参数
docker run ${image_name} -I
注意:
如果dockerfile中使用CMD,则docker run中传入的参数会把CMD中的参数覆盖,而dockerfile中使用ENTRYPOINT,则docker run中传入的参数作为ENTRYPOINT指令的参数正常执行
构建镜像 docker build .
修改镜像名 docker tag ${image_id} ${image_name}
请求当前机器的IP信息:
curl -s http://ipinfo.io/ip
参数 -I 可以返回头信息
curl -s http://ipinfo.io/ip -I
ARG和ENV指令
作用都是设置环境变量,区别在于ENV无论是在镜像构建时,还是容器运行时,该变量都可以使用,ARG只是用于构建镜像需要设置的变量,容器运行时就消失了
VOLUME
容器运行时,应该保证在存储层不写入任何数据,运行在容器内产生的数据,推荐通过挂载写入到宿主机上,进行维护
VOLUME /data # 将容器内的/data文件夹,在容器运行时,该目录自动挂载为匿名卷,任何向该目录中写入数据的操作,都不会被容器记录,保证容器存储层无状态理念
# Dockerfile
FROM centos
VOLUME ["/data1", "/data2"]
# 该容器运行时候,这个两个目录自动和宿主机的目录做好映射关系
1.容器数据挂载的方式,通过dockerfile,指定VOLUME目录
2. 通过docker run -v 参数,直接设置需要映射的挂载目录
EXPOSE
指定容器运行时对外提供的端口服务
docker port 查看端口信息
docker run -p 宿主机端口:容器端口
docker run -P # 随机端口
USER
用于改变环境,用于切换用户
USER root
标签:容器,run,CMD,指定,笔记,学习,参数,docker,dockerfile From: https://www.cnblogs.com/wllit/p/16909947.html