首页 > 其他分享 >dockerfile学习笔记

dockerfile学习笔记

时间:2022-11-20 22:57:19浏览次数:37  
标签:容器 run CMD 指定 笔记 学习 参数 docker dockerfile

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

相关文章