重学Docker (4)

这里说明有这种挂载方式,什么是dockerfile下面会讲

$ FROM centos # 没有"http://www.likecs.com/",是匿名挂载,宿主机的默认地址 # 容器内直接在根目录下 $ VOLUME ["volume01","volume02"] $ CMD echo "----Howl write dockerfile----" $ CMD /bin/bash

9.3 容器数据卷

容器数据卷是用于容器间的数据共享,操作方式还是命令行: --volume-from

# centos01就叫数据卷容器 $ docker run -d --name centos01 howl/centos:1.0 $ docker run -d --name centos02 --volume-from centos01 howl/centos:1.0

这是数据卷,不和容器同生命周期,所以哪怕父容器删了,其余容器也能访问同步





10. Dockerfile

Dockerfile是有一系列命令和参数的脚本,通过这个脚本我们可以构建一个镜像


10.1 Dockerfile指令

指令必须都是大写,从上往下执行,且每个指令都会创建一层(可用&&将命令连起来只生成一层)

命令 语法 解释
FROM   FROM image[:tag]   指定基础镜像,必须第一条。FROM scratch表示不以任何镜像为基础  
MAINTAINER     维护者信息  
RUN     镜像构建时需要执行的命令  
ADD     复制本地压缩文件,会自动解压  
WORKDIR     镜像工作目录  
VOLUME     设置容器卷  
EXPOSE     指定堆外端口  
CMD     指定容器运行中的命令,会被覆盖  
ENTRYPOINT     指定容器启动时运行的命令,可以追加命令  
ONBUILD     当构建一个被继承Dockerfile时会运行该指令  
COPY   COPY 宿主文件地址 容器文件地址   将文件拷贝到镜像中  
ENV     构建时设置环境变量  


10.1 编写Dockerfile

举例做个tomcat镜像,需要准备tomcat压缩包、jdk压缩包、readme文件

$ FROM centos $ MAINTAINER howl $ COPY readme.txt /usr/local/readme.txt $ ADD jdk-8u291-linux-x64.tar.gz /usr/local $ ADD apache-tomcat-8.5.68.tar.gz /usr/local $ RUN yum -y install vim $ ENV MYPATH /usr/local $ WORKDIR $MYPATH # JAVA_HOME 目录安装之后才知道 $ ENV JAVA_HOME /usr/local/jdk1.8.0_291 $ ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar $ ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.68 $ ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.68 $ ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib $ EXPOSE 8080 $ CMD /usr/local/apache-tomcat-8.5.68/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.68/bin/logs/catalina.out

每条指令都会创建一个新的镜像层,并对镜像进行提交

若构建名为Dockerfile那么就会自动查找,不用-f去指定了

Docker运行得有前台应用在运行,不然会自动结束,tail就是为了前台运行,比如top等命令

注意:根据linux位数,arm,aarch64来安装jdk,笔者安装错了,走了很多弯路



10.2 Build制作镜像 # -f 指定dockerfile的路径 # -t 生成的镜像名字[:tag] 生成镜像的地址 # . 表示当前目录 $ docker build -t howl/tomcat .

10.3 运行制作的镜像 $ docker run -d -p 8080:8080 howl/tomcat

有个注意的地方,webapps下要新建目录才能访问的,不能放入已有文件夹内,也不能直接放入webapps里面



10.4 发布镜像

镜像的发布有两种途径,分别是:


DockerHub

# 首先需要登录 $ docker login -u loadingkiller $ Password: "输入密码" # 推送名字得是自己DockerHub上的账号名,所以得先改标签 # 本来 howl/centos 改成 loadingkiller/tomcat $ docker tag howl/tomcat:latest loadingkiller/tomcat:1.0 # 推送,速度慢等吧 $ docker push loadingkiller/centos:1.0

阿里云镜像仓库

进入阿里云镜像管理可以创建镜像仓库,然后跟着里面的提示走

# 登录 docker login -u=XXX registry.cn-hongkong.aliyuncs.com # 选择分支对应关系 docker tag [ImageId] registry.cn-hongkong.aliyuncs.com/howlet/mytomcat:[镜像版本号] # 推送上去 docker push registry.cn-hongkong.aliyuncs.com/howlet/mytomcat:[镜像版本号] # 拉取 docker pull registry.cn-hongkong.aliyuncs.com/howlet/mytomcat:[镜像版本号]



内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzspdj.html