Docker知识总结 (五) Dockerfile

Dockerfile 介绍

Dockerfile是用来构建docker 镜像的构建文件!命令参数脚本!

Dockerfile 构建过程

基础知识:
(1) 指令必须是大写字母
(2) 执行从上到下
(3) # 表示注释
(4) 每一个指令都会创建提交一个新的镜像层并提交
在这里插入图片描述

Dockerfile 指令

所有命令官方文档:https://docs.docker.com/engine/reference/builder/

如下部分命令:

FROM   # 指定基础镜像 一切从这里开始
RUN    # 镜像构建的时候需要运行的命令
CMD    # 指定这个容器启动的时后要运行的命令(只有最后一个会生效,可被替代)
ENTRYPOINT # 指定这个容器启动的时候要运行的命令(可追加命令)
LABEL  # 设置镜像的标签
MAINTAINER # 镜像是谁写的,姓名+邮箱
EXPOSE # 保留端口配置
ENV # 构建的时候设置环境变量
ADD    # copy文件。会自动解压
COPY # 类似ADD,将文件拷贝到镜像中
VOLUME # 挂载的目录
WORKDIR# 镜像的工作目录
ARG  # 设置编译镜像时加入的参数
ONBUILD # 当构建被继承 DockerFIle 这个时候就会运行
STOPSIGNAL  #设置容器的退出信号量
HEALTHCHECK
SHELL

创建一个自己的centos镜像

centos官方镜像的Dockerfile:
在这里插入图片描述
(1) 创建Dockerfile文件

[root@VM-4-17-centos dockerfile]# cat dockerfile-centos 
FROM centos:centos7.9.2009
MAINTAINER zhx<3136713504@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo '-----end-----'
CMD /bin/bash

(2) 执行docker build

docker build -f dockerfile-centos -t mycentos:1.0 .

最终返回success即代表成功。

(3) 测试运行

[root@VM-4-17-centos dockerfile]# docker run -it mycentos:1.0
[root@bb6bdc3229c1 local]# pwd
/usr/local
[root@bb6bdc3229c1 local]# vim test.java    # 测试新增的vim是否成功
[root@bb6bdc3229c1 local]# ifconfig    # 测试新增的ifconfig是否成功
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 8  bytes 656 (656.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


(4) 查看镜像的构建过程

[root@VM-4-17-centos dockerfile]# docker history 0c18e8f6d0e7
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
0c18e8f6d0e7   20 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin…   0B        
bcea0da1c1e6   20 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B        
8082a2aa1189   20 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B        
bd24d65a0400   20 minutes ago   /bin/sh -c #(nop)  EXPOSE 80                    0B        
a1cdffcb80bc   20 minutes ago   /bin/sh -c yum -y install net-tools             166MB     
53ea63c137f6   20 minutes ago   /bin/sh -c yum -y install vim                   221MB     
27c642c3be3e   20 minutes ago   /bin/sh -c #(nop) WORKDIR /usr/local            0B        
f818b92286c2   20 minutes ago   /bin/sh -c #(nop)  ENV MYPATH=/usr/local        0B        
9f16cd75f5f5   20 minutes ago   /bin/sh -c #(nop)  MAINTAINER zhx<3136713504…   0B        
eeb6ee3f44bd   7 months ago     /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B        
<missing>      7 months ago     /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B        
<missing>      7 months ago     /bin/sh -c #(nop) ADD file:b3ebbe8bd304723d4…   204MB     

创建一个tomcat镜像

(1) 准备的资源路径

[root@VM-4-17-centos tomcat-src]# pwd
/home/tomcat-src
[root@VM-4-17-centos tomcat-src]# ls
apache-tomcat-9.0.22.tar.gz  Dockerfile  jdk-8u261-linux-x64.tar.gz

(2) 创建Dockerfile

FROM centos:centos7.6.1810
MAINTAINER zhx<3136xxxxxx@qq.com>

ADD jdk-8u261-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_261
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:CATALINA_HOME/lib:CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -f /usr/local/apache-tomcat-9.0.22/logs/catalina.out

(3) 构建镜像

[root@VM-4-17-centos tomcat-src]# docker build -f ./Dockerfile -t diytomcat:1.0 .

(4) 启动运行

docker run -d -p 8080:8080 --name diytomcat01 -v /home/build/tomcat/test/:/usr/local/apache-tomcat-9.0.22/webapps/test -v /home/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.22/logs diytomcat:1.0

(5) 测试环境是否装好了

  1. 外部访问: ip地址:8080
  2. 运行java,javac等命令

发布镜像到docker hub

  1. 需要一个 https://hub.docker.com/的账号
  2. 使用 docker login 登录

docker login语法:

[root@VM-4-17-centos tomcat]# docker login --help

Usage:  docker login [OPTIONS] [SERVER]

Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.

Options:
  -p, --password string   Password
      --password-stdin    Take the password from stdin
  -u, --username string   Username

登录:

[root@VM-4-17-centos tomcat]# docker login -u username
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
  1. 使用docker push 提交镜像到docker hub
    docker push语法:
[root@VM-4-17-centos tomcat]# docker push --help

Usage:  docker push [OPTIONS] NAME[:TAG]

Push an image or a repository to a registry

Options:
  -a, --all-tags                Push all tagged images in the repository
      --disable-content-trust   Skip image signing (default true)
  -q, --quiet                   Suppress verbose output

添加一个tag:

[root@VM-4-17-centos tomcat-src]# docker images
REPOSITORY   TAG              IMAGE ID       CREATED          SIZE
diytomcat    1.0              dadb05f09719   15 seconds ago   790MB
mysql        latest           3218b38490ce   4 months ago     516MB
centos       centos7.6.1810   f1cb7c7d58b7   3 years ago      202MB
[root@VM-4-17-centos tomcat-src]# docker tag diytomcat:1.0 jikezhang/diytomcat:1.0

push:

[root@VM-4-17-centos tomcat-src]# docker push jikezhang/diytomcat:1.0
The push refers to repository [docker.io/jikezhang/diytomcat]
ef5292fe44f0: Pushed 
267d2ef6470a: Pushed 
d9e099ac4dde: Pushed 
89169d87dbe2: Pushed 
1.0: digest: sha256:21ec50deca4cc74451e318dc6c42ccf40d2a44837c08883c5f11b146ec016905 size: 1166
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值