第四节 构建镜像

一、从已经创建的容器中更新镜像,并提交这个镜像

docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2

m:提交信息

a:作者

e218edb10161:容器id,被改造的容器id

runoob/ubuntu:v2:构建完成后容器的tag

二、通过Dockerfile指令来创建镜像

DockerFile指令

FROM          #指定基础镜像,一切从这里开始构建
MAINTAINER    #创建者信息,一般是名字+邮箱形式
RUN           #镜像构建的时候需要运行的命令
ADD           #将文件添加到容器,会自动解压
COPY          #将文件拷贝到容器
WORKDIR       #镜像的工作目录
VOLUME        #挂载卷
EXPOSE        #暴露端口
CMD           #指定这个容器启动时要运行的命令,Dockerfile中只能写一条CMD指令,如果多条,只有最后一条生效,CMD能够被docker run后面跟的命令行参数替换
ENTRYPOINT    #指定这个容器启动时要运行的命令,Dockerfile中只能写一条ENTRYPOINT指令,如果多条,只有最后一条生效,ENTRYPOINT不能够被docker run后面跟的命令行参数替换,但是该命令行参数可以作为追加参数
ONBULID       #当构建一个被集成的DockerFile,这个时候就会运行onbulid的指令,触发指令
ENV           #构建的时候设置环境变量

实践一、制作自己的centos镜像
# 1.编写dockerfile文件
[root@amumu zzl-dockerfile]# cat centos-dockerfile 
FROM centos
MAINTAINER zhuzhonglang<[email protected]>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum install vim -y
RUN yum install net-tools -y
EXPOSE 8090
CMD echo $MYPATH
CMD echo '-----------end----------'
CMD /bin/bash

# 2.创建镜像
[root@amumu zzl-dockerfile]# docker build -f centos-dockerfile -t mycentos:1.0 . 

[root@amumu zzl-dockerfile]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
mycentos     1.0       ff0a2b5b0669   3 minutes ago   291MB
mysql        5.7       87eca374c0ed   3 weeks ago     447MB
nginx        latest    62d49f9bab67   4 weeks ago     133MB
centos       latest    300e315adb2f   5 months ago    209MB
# 3.启动自己创建的镜像
[root@amumu zzl-dockerfile]# docker run -it ff0a2b5b0669 /bin/bash
# 4.进入容器后工作目录为/usr/local,这个目录正是我构建镜像时设置好的WORKDIR
[root@49d1ec65f8ed local]# pwd
/usr/local
# 5.验证ifconig命令存在,因为构建镜像时我执行了如下命令:RUN yum install net-tools -y
[root@49d1ec65f8ed local]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.4  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:04  txqueuelen 0  (Ethernet)
        RX packets 7  bytes 578 (578.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 1  (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

实践二、制作Tomcat镜像

# 1.制作镜像用到的文件:tomcat,jdk,centos,readme.txt
[root@amumu tomcat]# pwd
/data/tomcat
[root@amumu tomcat]# ls
apache-tomcat-9.0.45  apache-tomcat-9.0.45.tar.gz  Dockerfile  jdk1.8.0_251  jdk-8u251-linux-x64.tar.gz  readme.txt
[root@amumu tomcat]# 
# 2.编写Dockerfile文件,文件名用官方推荐的文件名Dockerfile,这样在执行docker build时不需要通过-f指定文件
[root@amumu tomcat]# vi Dockerfile 
FROM centos
MAINTAINER zhuzhonglang<[email protected]>
COPY readme.txt /usr/local
ADD  apache-tomcat-9.0.45.tar.gz /usr/local
ADD  jdk-8u251-linux-x64.tar.gz /usr/local
RUN  yum install vim -y
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_251
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.45
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.45
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.45/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.45/bin/logs/catalina.out
# 3.制作镜像
[root@amumu tomcat]# docker build -t zhuzhonglang/mytomcat:9.0 . 
# 4.运行镜像
[root@amumu tomcat]# docker run -d -p 8001:8080 --name=mytomcat -v /data/tomcat/test:/usr/local/apache-tomcat-9.0.45/webapps/test -v /data/tomcat/tomcatlogs:/usr/local/apache-tomcat-9.0.45/logs zhuzhonglang/mytomcat:9.0           
ffde51f5b923ce6dec834a8f068c0c6c360f37b5c5d1586232e2da34c8986abc
[root@amumu tomcat]# 
# 5.如果启动容器后出现立刻退出,这时需要查看日志
我们可以通过如下命令来获取容器的日志地址docker inspect --format '{
    
    {.LogPath}}' ffde51f5b92
然后通过cat命令查看上述命令找到的日志地址
或者通过如下命令也可:docker logs ffde51f5b92  # 查看容器的日志
# 6. 访问Tomcat
[root@amumu tomcat]# curl localhost:8001

猜你喜欢

转载自blog.csdn.net/qq_20663229/article/details/116840131