十 SpringCloud - Docker( 三 )

4.2.1.4 ADD(add)语法: ADD <src> <dest><src>相对被构建的源目录的相对路径,也可以是一个远程的文件url;<dest> 是container中的绝对路径含义:它的基本作用是从宿主机系统的文件系统上复制文件到目标容器的文件系统 。1)如果源是一个URL,那该URL的内容将被下载并复制到容器中 。2)如果如果文件是可识别的压缩格式,则docker会帮忙解压缩 。3)如果要ADD本地文件,则本地文件必须在 docker build <PATH>,指定的path目录下,默认当前目录 。4)ADD只有在build镜像的时候运行一次,后面运行container的时候不会再重新加载了 。4.2.1.5 ENV (env)语法: ENV <key> <value>含义: 用于设置环境变量 , 在image中设置一个环境变量 。注意: 设置了后,后续的RUN命令都可以使用,container启动后,可以通过docker inspect查看这个环境变量,也可以通过在docker run --env key=value时设置或修改环境变量 。4.2.1.6 RUN (run)语法: RUN <command>含义: 它接受命令作为参数并用于创建镜像,并在镜像构建的过程中执行 。注意: RUN可以运行任何被基础image支持的命令,RUN指令创建的中间镜像会被缓存,并会在下次构建中使用 。如果不想使用这些缓存镜像,可以在构建时指定--no-cache参数,如:docker build --no-cache4.2.1.7 CMD (cmd)语法: CMD ["executable","param1","param2"]CMD command param1 param2含义:用于container启动时指定的操作 。该操作可以是执行自定义脚本,也可以是执行系统命令 。该指令只能在文件中存在一次 , 如果有多个 , 则只执行最后一条 。区别:CMD用于指定在容器启动时所要执行的命令,而RUN用于指定镜像构建时所要执行的命令 。4.2.1.8 ENTRYPOINT (entrypoint)语法: ENTRYPOINT ["executable", "param1", "param2"]ENTRYPOINT command param1 param2 含义:这个命令和CMD功能一样 。指定容器启动时执行的命令 , 可以多次设置,但是只有最后一个有效 。指令的使用分为两种情况: 独自使用: 如果你还使用了CMD命令且CMD是一个完整的可执行的命令,那么CMD指令和ENTRYPOINT会互相覆盖,只有最后一个CMD或者ENTRYPOINT有效 。# CMD指令将不会被执行,只有ENTRYPOINT指令被执行CMD echo “Hello, World!”ENTRYPOINT ls -l CMD指令配合使用: 和CMD指令配合使用来指定ENTRYPOINT的默认参数,这时CMD指令不是一个完整的可执行命令,仅仅是参数部分;ENTRYPOINT指令只能使用JSON方式指定执行命令,而不能指定参数 。FROM centosCMD ["-l"]ENTRYPOINT ["/usr/bin/ls"]4.2.1.9 USER (user)语法: USER <user>含义: 设置指令 , 设置启动容器的用户,默认是root用户 。4.2.1.10 EXPOSE (expose)语法: EXPOSE <port> [<port>...]含义: 暴露容器内部端口,可以设置多个例如: EXPOSE 5000,暴露的是容器内部端口,不是主机端口,如果外部想使用这个端口需要在运行时映射 。docker run -d -p 127.0.0.1:8080:5000 hello-world4.2.2 Dockerfile构建jdk+tomcat镜像4.2.2.1 资源添加创建一个目录存放资源# mkdir Dockerfile-tomcat把jdk压缩包和tomcat压缩包放到 Dockerfile-tomcat 的目录下面

十 SpringCloud - Docker

文章插图
4.2.2.1 编辑Dockerfile# 新建一个空文件Dockerfile,编辑Dockerfile内容 。# vi DockerfileDockerfile内容:
# 基础镜像FROM centos:7.6.1810# 作者信息MAINTAINER kh9x <kh9x@qq.com># 容器工作目录WORKDIR /usr/local/# 在宿主机/usr/local/docker路径下,上传压缩包 , 并添加tomcat和jdk到镜像中,ADD会自动解压ADD jdk-8u192-linux-x64.tar.gz /usr/local/ADD apache-tomcat-8.5.73.tar.gz /usr/local/# 设置环境变量ENV JAVA_HOME /usr/local/jdk1.8.0_192/ENV PATH $JAVA_HOME/bin:$PATHENV CATALINA_HOME=/usr/local/apache-tomcat-8.5.73# 配置启动文件的权限RUN chmod +x /usr/local/apache-tomcat-8.5.73/bin/*.sh# 指定于外界交互的端口EXPOSE 8080# 定义在容器启动之后的运行程序 , 保持docker容器运行ENTRYPOINT /usr/local/apache-tomcat-8.5.73/bin/startup.sh && /bin/bash && tail -f /usr/local/apache-tomcat-8.5.73/logs/catalina.out4.2.2.3 执行构建命令构建(tomcat+jdk)服务镜像执行命令# docker build -t 镜像名:tag . 举例# docker build -t tomcat:8.5.73-jdk8-kh96 .注意:-t为执行镜像的名称,千万不要忽略结尾处的 .,它表示当前上下文目录 。不是Dockerfile的默认目录构建完成后查看镜像# docker images

推荐阅读