dockerfile 用于部署镜像的
1.定制docker镜像
镜像是分层存储的,每一层在前一层的基础上做了修改。
dockerfile指令
dockerfile实践
FROM nginx
RUN echo’<meta charset=utf8>超哥带你用docker运行nginx服务.’>
/usr/share/nginx/html/index.html
#运行该镜像
docker run -d -p 80:80 my-nginx
1.创建Dockerfile ,注意文件名,必须为Dockerfile
[root@fff learn_ docker]#pwd
/learn_docker
[root@fff learn_ docker]#cat Dockerfile
FROM nginx
RUN echo’<meta charset=utf8>超哥带你用docker运行nginx服务.’>
/usr/share/nginx/html/index.html
[root@yc_ docker0l learn_ docker]#
#2.构建Dockerfile
docker build .
#3.修改镜像名字
[root@fff learn_ docker]# docker tag [IMAGE ID] my_nginx
#3.运行该镜像
docker run -d -p 80:80 my_nginx
2.指令的使用
#cOPY
copy chaoge.py /home/
#支持多个文件,以及通配符形式复制,语法要满足Golang的filepath .Matchcopy chaoge* /tmp/cc?.txt. /home/
#ADD
ADD chaoge.tgz /home/
RUN linux命令(×xx修改命令)
#CMD在容器内运行某个命令,启动程序
#该镜像在运行容器实例的时候,执行的具体参数是什么
CMD["参数1", "参数2"]
CMD ["/bin/bash"]
#该容器运行时,执行的命令
#等同于命令行的直接操作docker run -it centoscat /etc/os-release
CMD ["cat","/etc/os-release"]
把宿主机安装,启动nginx的理念放入到dockerfile
ENTRYPOINT和CMD的玩法
#准备一个dockerfile
FROM centos:7.8.2003
RUN rpm --rebuilddb &&yum install epel-release -y
RUN rpm --rebuilddb && yum install curl -y
CMD ["curl" , "-s" , "http: / /ipinfo.io/ip"]
#上面CMD用法等同于如下
docker run my_centos curl -s http: / /ipinfo.io/ip#
dockr run my_centos
#2.构建镜像
docker build .
#3.查看结果
---> Running in be0811eb9124
Removing intermediate container b00811eb9124---> 4dc77fbce2e3
successfully built 4dc77fbc02e3
ARG和ENV
VOLUME
容器在运行时,应该保证在存储层不写入任何数据,运行在容器内产生的数据,我们推荐是挂载,写入到宿主机上,进行维护。
#fmount /mnt
VOLUME /data# 将容器内的/data文件夹,在容器运行时,该目录自动挂载为匿名卷,任何向该目录中写入数据的操作,都不会被容器记录,保证的容器存储层无状态理念
#Dockerfile1
FROM centos:7.8.2003
MAINTAINER chaoge
VOLUME [ " /data1" , " /data2"]
#该容器运行时候,这2个目录自动和宿主机的目录做好映射关系
1.容器数据挂载的方式,通过dockerfile,指定vOLUME目录
⒉.通过docker run -v参数,直接设置需要映射挂载的目录
EXPOSE
指定容器运行时对外提供的端口服务,
。帮助使用该镜像的人,快速理解该容器的一个端口业务
docker port容器
docker run -p宿主机端口:容器端口
docker run -P #作用是随机宿主机端口:容器内端口
WORKDIR
用于在dockerfile中,目录的切换,更改工作目录l
WORKDIR /opt
USER
用于改变环境,用于切换用户
USER root
USER fff