免费安全建网站,seo专业培训需要多久,网站作业免费下载,做设计图任务的网站dockerfile用于构建docker镜像的#xff0c;部署一个用于运行你所需的容器环境。相当一个脚本#xff0c;通过dockerfile自己的指令#xff0c;来构建软件依赖、文件依赖、存储、定制docker镜像的方式有两种#xff1a;手动修改容器内容#xff0c;导出新的镜像基于Docker…dockerfile用于构建docker镜像的部署一个用于运行你所需的容器环境。相当一个脚本通过dockerfile自己的指令来构建软件依赖、文件依赖、存储、定制docker镜像的方式有两种手动修改容器内容导出新的镜像基于Dockerfile自行编写指令基于指令流程创建镜像。dockerfile简介镜像都是多层存储的每一层在前一层的基础上进行修改容器也是多层存储以镜像为基础层在其基础上加一层做为容器运行时的存储层。镜像的创建有两种方式1、手动修改容器内容然后docker commit提交容器为新的镜像2、通过在dockerfile中定义一系列的命令和参数构成的脚本然后这些命令应用于基础镜像依次添加层最终生成一个新的镜像极大的简化了部署工作。dockerfile主要组成部分基础镜像信息FROM centos:6.8制作镜像操作指令RUN yum install openssh-server -y容器启动时执行指令 CMD [/bin/bash]举例安装一个mysql且启动如果是虚拟机部署形式的话如下开启vmare运行某一个虚拟机centos7centos7 安装mysql yum install mysql-server通过脚本或者命令启动mysql即可部署缓慢且修改了宿主机的环境删除较为麻烦占用宿主机的3306端口下面是基于容器运行mysql开始vmware运行虚拟机centos7安装docker容器软件获取mysql镜像即可docker pull mysqltag你无法自由控制该mysql的镜像是什么发行版你获取的镜像是别人定制好的你下载使用的你希望得到一个基于centos7.8的发行版运行mysql直接运行该镜像通过端口映射运行mysqldocker run mysql:5.6 容器能够运行必须在容器内有一个进程在前台运行该容器内有mysql正在前台运行。访问宿主机的一个映射端口访问到容器内的mysql想自定义镜像就得自己写脚本也就是dockerfiledockerfile指令FROM 这个镜像的妈妈是谁MAINTAINER指定维护者信息可以没有RUN你想让它干啥在命令前面加上RUN即可ADD添加宿主机的文件到容器内还多了个自动解压的功能。COPY 作用和ADD是一样的都是拷贝宿主机的文件到容器内WORKDIR 设置当前工作目录VOLUME 设置卷挂在主机目录EXPOSE 指定对外的端口在容器内暴露一个端口CMD指定容器启动后的要干的事情 dockerfile实践需求通过dockerfile构建nginx镜像且运行容器后生成的页面是“测试”。创建Dockerfile注意文件名必须是这个cat DockerfileFROM nginxRUN echo meta charsetutf8测试大佬 /usr/share/nginx/html/index.html2、构建Dockerfiledocker build .3、修改镜像名字docker tag b4200a856253 my_nginx4、运行该镜像docker run -d -p 80:80 my_nginx5、查看宿主机的80端口http://10.10.10.10:80COPY指令copy指令从宿主机复制文件/目录到新的一层镜像内如copy test.py /home/支持多个文件以及通配符形式复制语法要满足Golang的filepath.Matchcopy test* /tmp/cc?.txt. /home/COPY指令能够保留源文件的元数据如权限访问时间等等。ADD特性和COPY基本一致不过多些功能源文件是一个url此时docker引擎会下载该链接放入目标路径且权限自动设为600若这不是期望结果还得增加一层源文件是一个url且是一个压缩包不会自动解压也得是单独用RUN指令解压源文件是一个压缩文件且是gzip、bzip2、ADD指令会自动解压缩文件到目标路径。Dockerfile 官方推荐使用COPYADD会使构建缓存失效导致镜像构建失败缓慢。CMD在容器内运行某个命令启动用法注意是双引号CMD[参数1,参数2]在制定了entrypoint指令后用CMD指令具体的参数docker 不是虚拟机容器就是一个进程既然是进程那么程序在启动的时候需要制定运行参数这就是CMD指令作用。例如centos 镜像默认的CMD是/bin/bash直接docker run -it centos 会直接进入bash解释器。也可以启动容器时候指定参数docker run -it centos cat /etc/os-releaseaCMD运行shell 命令也会被转化为shell形式例如 CMD echo $PATH会被转化为CMD [sh, -c,echo ]容器内运行程序这里需要注意docker不是虚拟机的概念虚拟机里的程序运行基本上都是在后台运行利用systemctl 运行但是容器内没有后台进程的概念必须前台运行。容器就是为了主进程而存在的主进程如果退出了容器也就失去意义了自动退出。CMD systemctl start nginx这种写法是错误的容器会自动退出因为 systemctl star nginx 是希望以守护进程形式启动nginx且CMD命令会转化为 CMD [sh,-c,systemctl start nginx]这样的命令主进程是sh解释器执行完毕后立即结束了因此容器也就退出了因此正确的写法是CMD [nginx,-g,daemon off;]ENTRYPOINT 和 CMD的区别及用法ENTRYPOINT 和CMD的区别及用法ENV和ARG都是给容器设置环境变量区别在于ENV无论是在镜像构建时还是容器运行时该变量都可以使用ARG只是用于构建镜像需要设置的变量容器运行时就消失了。VOLUME容器再运行时应该保证在存储层不写入任何数据运行在容器内产生的数据我们推荐是挂载写入到宿主机上进行维护。VOLUME /data #将容器内的/data文件夹在容器运行时该目录自动挂载为匿名卷任何向该目录中写入数据的操作都不会被容器记录保证的容器存储层无状态理念。EXPOSE 制定容器运行时对外提供的端口服务帮助使用该镜像的人快速理解该容器的一个端口业务docker port 容器docker run -p 宿主机端口容器端口docker run -p #作用是随机宿主机端口容器内端口WORKDIR用于在dockerfile中目录的切换更改工作目录WORKDIR /optUSER用于改变环境用于切换用户USER rootUSER test 构建一个网站镜像nginx修改首页内容htmlweb framework web框架一般由开发通过某个开发语音基于某个web框架自己去开发一个web站点python、django框架。本次实践用python语言基于flask web框架开发一个网站写一个后端的 网站代码开发dockerfile部署该代码生成镜像其他人基于该镜像docker run就可以在电脑跑起来你这个网站比如安装一个etcd、nacos都是比较复杂的一些软件需要依赖于go语言环境比如需要依赖于java环境在自己的机器安装好对应的开发环境以及对应的版本以及个各种依赖。tomcat、jdk环境当有了dockerdocker pull nacos 打包好了各种依赖环境docker pull tomcat 这些主流的镜像都可以直接找到并且该镜像中就已经打包好了Java环境docker run tomcat xxxx 可以直接访问tomcat了在宿主机上准备一个目录准备好dockerfile写一个flask 的python代码创建好代码文件编写dockerfiletouch DockerfileFROM centos:7.8.2003
RUN curl -o /etc/ ;
RUN curl -o /etc/ ;
RUN yum makecache fast;
RUN yum install python3-devel python3-pip -y
RUN pip install flask
COPY test_flask.py /opt
WORKDIR /opt
EXPOSE 8080
CMD [python,app.py]检查代码环境及内容代码文件 和 Dockerfile 在平级目录中构建镜像生成一个镜像docker build -t test/my_flask .然后执行dockerfile里的命令docker build --no-cache -t ‘test/my_flask’.运行镜像生成容器 -d 后台运行 --name 容器的名字 -p宿主机的90端口访问到容器内地8080docker run -d my_flask -p 90:8080 test/my_flask访问宿主机看容器内flask web网站如何修改该网站的内容第一种修改宿主机的代码以及dockerfile重新构建第二种可以进入到以及运行的容器内修改代码重启容器即可。1进入容器docker exec -it 容器id bash2修改容器内的程序cat test_flask.py3退出容器重启容器exitdocker restart 容器id