DockerFile

1.镜像备份与迁移

备份

  • docker save -o 备份镜像的名称 源镜像名称:tag版本

恢复镜像

  • docker load -i 镜像文件

2.dockerFile常用指令

python dockerfile 本地依赖 dockerfile env path_私有仓库

  • CMD 指定容器启动时要运行的命令,假如有多个CMD,最后一个生效
    语法格式:
    CMD 或
    CMD ["","","",…]
    CMD ["","",…]
  • ENTRYPOINT:指定容器启动时要运行的命令
  • ONBUILD:当构建一个被继承的Dockerfile时运行的命令。

3.DockerFile构建自定义centos

  1. mydockerFIle文件
FROM centos
MAINTAINER caofeng<caofeng2012@126.com>
 
LABEL name="Xiaoyu CentOS Image" \
    build-date="20200421"
    
ENV WORKPATH /home/
WORKDIR $WORKPATH
 
RUN yum -y install net-tools
RUN yum -y install vim
 
EXPOSE 80
CMD /bin/bash

把文件复制到虚拟机/home目录下。

切换到存放文件的目录执行以下命令

  1. 构建命令
docker build -f mycentosDockerFile -t xiaoyu/mycentos:1.1 .

python dockerfile 本地依赖 dockerfile env path_tomcat_02

4.DockerFile构建自定义tomcat

  1. mytomcatdockerfile文件
FROM centos
MAINTAINER caofeng<caofeng2012@126.com>
 
LABEL name="Java1234 Tomcat Image" \
    build-date="20191115"
    
COPY  copyright.txt /home/copyright.txt
ADD server-jre-8u151-linux-x64.tar.gz /home/
ADD apache-tomcat-8.5.37.tar.gz /home/
 
ENV WORKPATH /home/apache-tomcat-8.5.37/
WORKDIR $WORKPATH
 
ENV JAVA_HOME /home/jdk1.8.0_151
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /home/apache-tomcat-8.5.37/
ENV CATALINA_BASE /home/apache-tomcat-8.5.37/
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
 
 
EXPOSE 8080
CMD ["/home/apache-tomcat-8.5.37/bin/catalina.sh","run"]
  1. 拷贝相关文件到宿主机上

python dockerfile 本地依赖 dockerfile env path_私有仓库_03


python dockerfile 本地依赖 dockerfile env path_tomcat_04


3. 进入home/dockerFile目录执行命令

docker build -f mytomcatdockerfile -t xiaoyu/mytomcat:1.1 .

python dockerfile 本地依赖 dockerfile env path_私有仓库_05

可以看到镜像创建成功。

python dockerfile 本地依赖 dockerfile env path_私有仓库_06

在本机也能够访问tomcat

5 .构建容器卷

  1. myVolumeDockerFile文件
FROM centos
VOLUME ["/home/v1","/home/v2"]
CMD /bin/bash
  1. 拷贝该文件到/home/dockerFile目录
  2. 执行命令
docker build -f myVolumeDockerFile -t xiaoyu/mytest:1.1 .

python dockerfile 本地依赖 dockerfile env path_docker_07

可以看到镜像构建成功。

运行后,我们进入home目录,找到v1,v2两个容器卷目录;

python dockerfile 本地依赖 dockerfile env path_私有仓库_08

然后我们通过 docker inspect 容器ID 来查看下默认生成的容器卷对应的宿主机目录

python dockerfile 本地依赖 dockerfile env path_docker_09

通过新建文件和 修改,我们发现,能实现同步

python dockerfile 本地依赖 dockerfile env path_私有仓库_10

这种方式不方便,不能自定义挂载的目录。

6.ONBUILD命令

当构建一个被继承的Dockerfile时运行的命令,父镜像在被子镜像继承后父镜像的onbuild被触发。可以把ONBUID理解为一个触发器。

编写Dockerfile的时候,其他命令都是为了自身镜像服务的,只有ONBUILD是为了子镜像服务;

简单实例:父镜像Dockerfile:

FROM centos
ONBUILD RUN yum -y install vim
CMD /bin/bash

子镜像简单点:

FROM parent

一句即可;当构建子镜像的时候,父镜像的ONBUILD会触发,子镜像直接安装vim;实际应用,一般是ONBUILD里执行的是一些父镜像暂时无法执行的东西,比如一些COPY,ADD,可以启动一些服务,父镜像当做模板一些,仅仅提供基础支持,然后具体实行是子镜像操作。

7.私有仓库搭建

  1. 拉取私有仓库镜像 (私有仓库程序本身就是一个镜像)
docker pull registy
  1. 第二步:启动私有仓库容器
docker run -di --name=myRegistry -p 5000:5000 registry
  1. 测试

http://192.168.153.128:5000/v2/_catalog

python dockerfile 本地依赖 dockerfile env path_私有仓库_11

看到这个说明启动成功。

  1. etc/docker 修改daemon.json,让docker信任私有仓库地址

“insecure-registries”: [“192.168.153.128:5000”]


  1. 重启docker
systemctl restart docker

8.私有仓库测试

第一步:标记此镜像为私有仓库的镜像

docker tag tomcat:7 192.168.153.128:5000/mytomcat7

第二步:上传镜像到私有仓库(先启动启动容器)

docker push 192.168.153.128:5000/mytomcat7

python dockerfile 本地依赖 dockerfile env path_私有仓库_12

可以看到有值了。

第三步:删除192.168.1.112:5000/mytomcat7本地仓库镜像

docker rmi -f 192.168.153.128:5000/mytomcat7

第四步:从私有仓库拉取192.168.153.128:5000/mytomcat7镜像,并运行;

docker run -it -p 8080:8080 192.168.153.128:5000/mytomcat7

访问地址

python dockerfile 本地依赖 dockerfile env path_私有仓库_13

看到这个说明ok