docker的学习第六天(代码片段)

lxhaaron lxhaaron     2022-12-09     430

关键词:

DockerFIle  

Dockerfile介绍

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

构建步骤:

1、编写一个dockerfile文件

2、docker build 构建成一个镜像

3、docker run 运行镜像

4、docker push 发布镜像(docker hub 、阿里云)

找一个官方镜像,点击跳转到github路径下,如以下一个实例:

FROM scratch
ADD CentOS-8-Container-8.1.1911-20200113.3-layer.x86_64.tar.xz  /

LABEL org.label-schema.schema-version="1.0"     org.label-schema.name="CentOS Base Image"     org.label-schema.vendor="CentOS"     org.label-schema.license="GPLv2"     org.label-schema.build-date="20200114"     org.opencontainers.image.title="CentOS Base Image"     org.opencontainers.image.vendor="CentOS"     org.opencontainers.image.licenses="GPL-2.0-only"     org.opencontainers.image.created="2020-01-14 00:00:00-08:00"

CMD ["/bin/bash"]

很多官方镜像都是基础包,很多功能没有,我们通常会自己搭建自己的镜像

官方既然可以制作镜像,我们也可以

DockerFile的构建过程

基础知识:

1、每个保留关键字都必须是大写

2、执行从上到下顺序执行

3、#表示注释

4、每一个指令都会创建提交一个新的镜像层并提交

技术图片

 

 

Dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单

Docker镜像已经 成为了企业交互的标准,所以必须要掌握这部分内容

Dockerfile:构建文件,定义了一切的步骤,类似于源代码

DockerImage:镜像,通过Dockerfile构建生成的镜像,最终发布和运行的产品,类似于原来的war包

dockerContrainer:容器,就是镜像运行起来提供服务

DockerFile的指令

技术图片

 

 以前都是使用别人的镜像,现在通过下面的命令生成自己的DockerFile,构建自己的镜像

 FROM :这是一个基础镜像

MAINTAINER:镜像是谁写的,留姓名+邮箱

RUN:镜像构建的时候需要运行的命令

ADD:步骤,如添加tomcat镜像,这个tomcat压缩包,就是我们要添加的内容

WORKDIR:镜像的工作目录

VOLUME:要挂载的目录 

EXPOSE:保留端口配置

RUN:指定要运行的

CMD:指定容器启动的时候要运行的命令,只有最后一个命令才生效,可被替代

ENTRYPOINT:指定这个容器启动的时候要运行的命令,可以追加命令

ONBUILD:当构建一个被继承 DockerFile 这个时候运行ONBUILD的指令,触发指令

COPY: 类似ADD,uqf我们文件拷贝到镜像中

ENV: 构建时设置环境变量

 实战练习:

Docker hub中,99%镜像都是在这个基础镜像来FROM Search ,然后配置需要的软件和配置来进行构建

 

#编辑一个DokerFIle文件
[root@fengfang dockerfiles]# clear [root@fengfang dockerfiles]# pwd /home/dockerfiles [root@fengfang dockerfiles]# cat mydockerfile-centos FROM centos MAINTAINER aaron<liuxh616@126.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 [root@fengfang dockerfiles]#

构建Dockerfile文件命令:

docker build -f 构建文件路径 -t 镜像名:版本号 . 

注意后面有一个点(.)

以下为上述实例的构建过程代码

[root@fengfang dockerfiles]# docker build -f mydockerfile-centos -t mycentos:1.01 .   #构建命令
Sending build context to Docker daemon  2.048kB
Step 1/10 : FROM centos
 ---> 831691599b88
Step 2/10 : MAINTAINER aaron<liuxh616@126.com>
 ---> Running in d9583935fdb7
Removing intermediate container d9583935fdb7
 ---> 872b0d94f40f
Step 3/10 : ENV MYPATH /usr/local
 ---> Running in 3e1901548470
Removing intermediate container 3e1901548470
 ---> bcd157a757e4
Step 4/10 : WORKDIR $MYPATH
 ---> Running in 4dddaceafd0e
Removing intermediate container 4dddaceafd0e
 ---> 8a3373442d03
Step 5/10 : RUN yum -y install vim
 ---> Running in 8b7d5e75b2b4
CentOS-8 - AppStream                            410 kB/s | 5.8 MB     00:14    
CentOS-8 - Base                                 242 kB/s | 2.2 MB     00:09    
CentOS-8 - Extras                                11 kB/s | 7.0 kB     00:00    
Dependencies resolved.
================================================================================
 Package             Arch        Version                   Repository      Size
================================================================================
Installing:
 vim-enhanced        x86_64      2:8.0.1763-13.el8         AppStream      1.4 M
Installing dependencies:
 gpm-libs            x86_64      1.20.7-15.el8             AppStream       39 k
 vim-common          x86_64      2:8.0.1763-13.el8         AppStream      6.3 M
 vim-filesystem      noarch      2:8.0.1763-13.el8         AppStream       48 k
 which               x86_64      2.21-12.el8               BaseOS          49 k

Transaction Summary
================================================================================
Install  5 Packages

Total download size: 7.8 M
Installed size: 31 M
Downloading Packages:
(1/5): gpm-libs-1.20.7-15.el8.x86_64.rpm        154 kB/s |  39 kB     00:00    
(2/5): vim-filesystem-8.0.1763-13.el8.noarch.rp 267 kB/s |  48 kB     00:00    
(3/5): which-2.21-12.el8.x86_64.rpm             357 kB/s |  49 kB     00:00    
(4/5): vim-enhanced-8.0.1763-13.el8.x86_64.rpm  355 kB/s | 1.4 MB     00:03    
(5/5): vim-common-8.0.1763-13.el8.x86_64.rpm    396 kB/s | 6.3 MB     00:16    
--------------------------------------------------------------------------------
Total                                           209 kB/s | 7.8 MB     00:38     
warning: /var/cache/dnf/AppStream-02e86d1c976ab532/packages/gpm-libs-1.20.7-15.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS-8 - AppStream                            1.6 MB/s | 1.6 kB     00:00    
Importing GPG key 0x8483C65D:
 Userid     : "CentOS (CentOS Official Signing Key) <security@centos.org>"
 Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : which-2.21-12.el8.x86_64                               1/5 
  Installing       : vim-filesystem-2:8.0.1763-13.el8.noarch                2/5 
  Installing       : vim-common-2:8.0.1763-13.el8.x86_64                    3/5 
  Installing       : gpm-libs-1.20.7-15.el8.x86_64                          4/5 
  Running scriptlet: gpm-libs-1.20.7-15.el8.x86_64                          4/5 
  Installing       : vim-enhanced-2:8.0.1763-13.el8.x86_64                  5/5 
  Running scriptlet: vim-enhanced-2:8.0.1763-13.el8.x86_64                  5/5 
  Running scriptlet: vim-common-2:8.0.1763-13.el8.x86_64                    5/5 
  Verifying        : gpm-libs-1.20.7-15.el8.x86_64                          1/5 
  Verifying        : vim-common-2:8.0.1763-13.el8.x86_64                    2/5 
  Verifying        : vim-enhanced-2:8.0.1763-13.el8.x86_64                  3/5 
  Verifying        : vim-filesystem-2:8.0.1763-13.el8.noarch                4/5 
  Verifying        : which-2.21-12.el8.x86_64                               5/5 

Installed:
  gpm-libs-1.20.7-15.el8.x86_64         vim-common-2:8.0.1763-13.el8.x86_64    
  vim-enhanced-2:8.0.1763-13.el8.x86_64 vim-filesystem-2:8.0.1763-13.el8.noarch
  which-2.21-12.el8.x86_64             

Complete!
Removing intermediate container 8b7d5e75b2b4
 ---> 1951731eb6d1
Step 6/10 : RUN yum -y install net-tools
 ---> Running in d473ddb1187f
Last metadata expiration check: 0:00:44 ago on Mon Jul 27 07:11:43 2020.
Dependencies resolved.
================================================================================
 Package         Architecture Version                        Repository    Size
================================================================================
Installing:
 net-tools       x86_64       2.0-0.51.20160912git.el8       BaseOS       323 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 323 k
Installed size: 1.0 M
Downloading Packages:
net-tools-2.0-0.51.20160912git.el8.x86_64.rpm   377 kB/s | 323 kB     00:00    
--------------------------------------------------------------------------------
Total                                            14 kB/s | 323 kB     00:23     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : net-tools-2.0-0.51.20160912git.el8.x86_64              1/1 
  Running scriptlet: net-tools-2.0-0.51.20160912git.el8.x86_64              1/1 
  Verifying        : net-tools-2.0-0.51.20160912git.el8.x86_64              1/1 

Installed:
  net-tools-2.0-0.51.20160912git.el8.x86_64                                     

Complete!
Removing intermediate container d473ddb1187f
 ---> 8c80d175f619
Step 7/10 : EXPOSE 80
 ---> Running in 4eaadf509842
Removing intermediate container 4eaadf509842
 ---> 4721d1005156
Step 8/10 : CMD echo $MYPATH
 ---> Running in 0b022380972b
Removing intermediate container 0b022380972b
 ---> e5cb250036ee
Step 9/10 : CMD echo "--------end------"
 ---> Running in d17888ac0d47
Removing intermediate container d17888ac0d47
 ---> 04988036cac7
Step 10/10 : CMD /bin/bash
 ---> Running in c1653fb0fa45
Removing intermediate container c1653fb0fa45
 ---> c0cfb44a7745
Successfully built c0cfb44a7745
Successfully tagged mycentos:1.01
[root@fengfang dockerfiles]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
mycentos            1.01                c0cfb44a7745        About a minute ago   295MB   #新构建成功的镜像
aaron/centos        1.0                 c20bce8652d2        5 hours ago          215MB
tomcat_aaron        1.0                 671de9f0cd4f        3 days ago           652MB
tomcat              9.0                 b4f6a90c69a4        3 days ago           647MB
tomcat              latest              b4f6a90c69a4        3 days ago           647MB
mysql               5.7                 8679ced16d20        4 days ago           448MB
nginx               latest              8cf1bfb43ff5        5 days ago           132MB
centos              latest              831691599b88        5 weeks ago          215MB
[root@fengfang dockerfiles]# 

3、运行新构建的镜像

[root@fengfang dockerfiles]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mycentos            1.01                c0cfb44a7745        3 minutes ago       295MB
aaron/centos        1.0                 c20bce8652d2        5 hours ago         215MB
tomcat_aaron        1.0                 671de9f0cd4f        3 days ago          652MB
tomcat              9.0                 b4f6a90c69a4        3 days ago          647MB
tomcat              latest              b4f6a90c69a4        3 days ago          647MB
mysql               5.7                 8679ced16d20        4 days ago          448MB
nginx               latest              8cf1bfb43ff5        5 days ago          132MB
centos              latest              831691599b88        5 weeks ago         215MB
[root@fengfang dockerfiles]# docker run -it mycentos:1.01    #运行自己创建的镜像
[root@d4a4b4cd2628 local]# pwd    #工作目录就是我们在Dockerfile里面定义的WORKDIR目录
/usr/local 
[root@d4a4b4cd2628 local]# ifconfig    #这个命令也已经可以支持了
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:03  txqueuelen 0  (Ethernet)
        RX packets 7  bytes 586 (586.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

[root@d4a4b4cd2628 local]# 

我们还可以通过docker history 镜像Id  查看某一镜像的历史变更记录

 

[root@fengfang dockerfiles]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mycentos            1.01                c0cfb44a7745        6 minutes ago       295MB
aaron/centos        1.0                 c20bce8652d2        5 hours ago         215MB
tomcat_aaron        1.0                 671de9f0cd4f        3 days ago          652MB
tomcat              9.0                 b4f6a90c69a4        3 days ago          647MB
tomcat              latest              b4f6a90c69a4        3 days ago          647MB
mysql               5.7                 8679ced16d20        4 days ago          448MB
nginx               latest              8cf1bfb43ff5        5 days ago          132MB
centos              latest              831691599b88        5 weeks ago         215MB
[root@fengfang dockerfiles]# docker history c0cfb44a7745
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
c0cfb44a7745        6 minutes ago       /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin…   0B                  
04988036cac7        6 minutes ago       /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B                  
e5cb250036ee        6 minutes ago       /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B                  
4721d1005156        6 minutes ago       /bin/sh -c #(nop)  EXPOSE 80                    0B                  
8c80d175f619        6 minutes ago       /bin/sh -c yum -y install net-tools             22.8MB              
1951731eb6d1        7 minutes ago       /bin/sh -c yum -y install vim                   57.2MB              
8a3373442d03        8 minutes ago       /bin/sh -c #(nop) WORKDIR /usr/local            0B                  
bcd157a757e4        8 minutes ago       /bin/sh -c #(nop)  ENV MYPATH=/usr/local        0B                  
872b0d94f40f        8 minutes ago       /bin/sh -c #(nop)  MAINTAINER aaron<liuxh616…   0B                  
831691599b88        5 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
<missing>           5 weeks ago         /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B                  
<missing>           5 weeks ago         /bin/sh -c #(nop) ADD file:84700c11fcc969ac0…   215MB               
[root@fengfang dockerfiles]# 

 现在说下CMD和ENTRYPOINT的区别

CMD               :指定这个容器启动的时候运行的命令,只有最后一个会生效,可被替代

ENTRYPOINT:指定这个容器启动的时候要运行的命令,可以追加命令

 我们使用CMD方式,后面追加命令会出错

dockerfile的内容

[root@fengfang dockerfiles]# cat dockerfile-cmd-test 
FROM centos
CMD ["ls","-a"]


[root@fengfang dockerfiles]# 

追加命令执行时会出错

[root@fengfang dockerfiles]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
cmdtest             latest              462e7d919412        About a minute ago   215MB
<none>              <none>              32c99d82cf43        4 minutes ago        215MB
mycentos            1.01                c0cfb44a7745        2 hours ago          295MB
aaron/centos        1.0                 c20bce8652d2        7 hours ago          215MB
tomcat_aaron        1.0                 671de9f0cd4f        3 days ago           652MB
tomcat              9.0                 b4f6a90c69a4        4 days ago           647MB
tomcat              latest              b4f6a90c69a4        4 days ago           647MB
mysql               5.7                 8679ced16d20        4 days ago           448MB
nginx               latest              8cf1bfb43ff5        5 days ago           132MB
centos              latest              831691599b88        5 weeks ago          215MB
[root@fengfang dockerfiles]# docker run -it 462e7d919412
.   .dockerenv    dev  home  lib64       media  opt   root  sbin    sys  usr
..  bin        etc  lib   lost+found  mnt    proc  run   srv    tmp  var
[root@fengfang dockerfiles]# docker run -it 462e7d919412 -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: "-l": executable file not found in $PATH": unknown.
ERRO[0000] error waiting for container: context canceled 

我们使用entrypoint方式来执行命令:

[root@fengfang dockerfiles]# vim dockerfile-entrypoint
[root@fengfang dockerfiles]# cat vim dockerfile-entrypoint 
cat: vim: 没有那个文件或目录
FROM centos
ENTYRPOINT ["ls","-a"]

[root@fengfang dockerfiles]# cat dockerfile-entrypoint 
FROM centos
ENTRYPOINT ["ls","-a"]

[root@fengfang dockerfiles]# 

我们在运行时加参数时就不会出错

[root@fengfang dockerfiles]# docker build -f dockerfile-entrypoint -t entrypoint-test .   #构建镜像
Sending build context to Docker daemon  4.096kB
Step 1/2 : FROM centos
 ---> 831691599b88
Step 2/2 : ENTRYPOINT ["ls","-a"]
 ---> Running in cff416af2740
Removing intermediate container cff416af2740
 ---> 1332ea7ae09c
Successfully built 1332ea7ae09c
Successfully tagged entrypoint-test:latest
[root@fengfang dockerfiles]# docker run -it 1332ea7ae09c -t   #运行时加参数时不会出错,但使用CMD时是会出错的
dev   .   .dockerenv  sys   run  var  lost+found  home    lib64  mnt  sbin
proc  ..  etc          root  tmp  usr  bin      lib    media  opt  srv
[root@fengfang dockerfiles]# docker run -it 1332ea7ae09c
.   .dockerenv    dev  home  lib64       media  opt   root  sbin    sys  usr
..  bin        etc  lib   lost+found  mnt    proc  run   srv    tmp  var
[root@fengfang dockerfiles]# docker run -it 1332ea7ae09c -l
total 0
drwxr-xr-x.   1 root root   6 Jul 27 09:10 .
drwxr-xr-x.   1 root root   6 Jul 27 09:10 ..
-rwxr-xr-x.   1 root root   0 Jul 27 09:10 .dockerenv
lrwxrwxrwx.   1 root root   7 May 11  2019 bin -> usr/bin
drwxr-xr-x.   5 root root 360 Jul 27 09:10 dev
drwxr-xr-x.   1 root root  66 Jul 27 09:10 etc
drwxr-xr-x.   2 root root   6 May 11  2019 home
lrwxrwxrwx.   1 root root   7 May 11  2019 lib -> usr/lib
lrwxrwxrwx.   1 root root   9 May 11  2019 lib64 -> usr/lib64
drwx------.   2 root root   6 Jun 11 02:35 lost+found
drwxr-xr-x.   2 root root   6 May 11  2019 media
drwxr-xr-x.   2 root root   6 May 11  2019 mnt
drwxr-xr-x.   2 root root   6 May 11  2019 opt
dr-xr-xr-x. 160 root root   0 Jul 27 09:10 proc
dr-xr-x---.   2 root root 162 Jun 11 02:35 root
drwxr-xr-x.  11 root root 163 Jun 11 02:35 run
lrwxrwxrwx.   1 root root   8 May 11  2019 sbin -> usr/sbin
drwxr-xr-x.   2 root root   6 May 11  2019 srv
dr-xr-xr-x.  13 root root   0 Jul 24 03:29 sys
drwxrwxrwt.   7 root root 145 Jun 11 02:35 tmp
drwxr-xr-x.  12 root root 144 Jun 11 02:35 usr
drwxr-xr-x.  20 root root 262 Jun 11 02:35 var
[root@fengfang dockerfiles]# 

 实战Tomcat

1、准备需用到的文件,jdk和tomcat文件以及readme.txt

[root@fengfang lxh]# ll
总用量 150716
-rw-r--r--. 1 root root  11211292 7月  28 10:01 apache-tomcat-9.0.37.tar.gz
-rw-r--r--. 1 root root       628 7月  28 10:22 Dockerfile
-rw-r--r--. 1 root root 143111803 7月  28 10:04 jdk-8u261-linux-x64.tar.gz
-rw-r--r--. 1 root root         0 7月  28 10:10 readme.txt
[root@fengfang lxh]# 

2、生成Dockerfile文件,并输入下面这些命令

FROM centos
MAINTAINER aaron<liuxh616@126.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u261-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.37.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.37
ENV CATALINA_BASH  /usr/local/apache-tomcat-9.0.37
ENV PATH $PATH;$JAVA_HOME/bin;$CATALINA_lib;$CATALINA_HOME/bin

EXPOSE 8080

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

3、构建镜像文件

[root@fengfang lxh]# docker build -f Dockerfile -t diytomcat .     #构建镜像   这里建议不加版本,默认就会latest,后续运行时也就不用再加版本号
Sending build context to Docker daemon  154.3MB
Step 1/15 : FROM centos
 ---> 831691599b88
Step 2/15 : MAINTAINER aaron<liuxh616@126.com>
 ---> Using cache
 ---> 872b0d94f40f
Step 3/15 : COPY readme.txt /usr/local/readme.txt
 ---> 3792dc8ee191
Step 4/15 : ADD jdk-8u261-linux-x64.tar.gz /usr/local/
 ---> f7d38a3369c3
Step 5/15 : ADD apache-tomcat-9.0.37.tar.gz /usr/local/
 ---> 614bec8c110a
Step 6/15 : RUN yum -y install vim
 ---> Running in 1756750d1e03
CentOS-8 - AppStream                            1.4 MB/s | 5.8 MB     00:04    
CentOS-8 - Base                                 811 kB/s | 2.2 MB     00:02    
CentOS-8 - Extras                               329  B/s | 7.0 kB     00:21    
Dependencies resolved.
================================================================================
 Package             Arch        Version                   Repository      Size
================================================================================
Installing:
 vim-enhanced        x86_64      2:8.0.1763-13.el8         AppStream      1.4 M
Installing dependencies:
 gpm-libs            x86_64      1.20.7-15.el8             AppStream       39 k
 vim-common          x86_64      2:8.0.1763-13.el8         AppStream      6.3 M
 vim-filesystem      noarch      2:8.0.1763-13.el8         AppStream       48 k
 which               x86_64      2.21-12.el8               BaseOS          49 k

Transaction Summary
================================================================================
Install  5 Packages

Total download size: 7.8 M
Installed size: 31 M
Downloading Packages:
(1/5): gpm-libs-1.20.7-15.el8.x86_64.rpm        279 kB/s |  39 kB     00:00    
(2/5): vim-filesystem-8.0.1763-13.el8.noarch.rp 723 kB/s |  48 kB     00:00    
(3/5): which-2.21-12.el8.x86_64.rpm             343 kB/s |  49 kB     00:00    
(4/5): vim-enhanced-8.0.1763-13.el8.x86_64.rpm  1.4 MB/s | 1.4 MB     00:00    
(5/5): vim-common-8.0.1763-13.el8.x86_64.rpm    1.6 MB/s | 6.3 MB     00:04    
--------------------------------------------------------------------------------
Total                                           169 kB/s | 7.8 MB     00:47     
warning: /var/cache/dnf/AppStream-02e86d1c976ab532/packages/gpm-libs-1.20.7-15.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS-8 - AppStream                            1.6 MB/s | 1.6 kB     00:00    
Importing GPG key 0x8483C65D:
 Userid     : "CentOS (CentOS Official Signing Key) <security@centos.org>"
 Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : which-2.21-12.el8.x86_64                               1/5 
  Installing       : vim-filesystem-2:8.0.1763-13.el8.noarch                2/5 
  Installing       : vim-common-2:8.0.1763-13.el8.x86_64                    3/5 
  Installing       : gpm-libs-1.20.7-15.el8.x86_64                          4/5 
  Running scriptlet: gpm-libs-1.20.7-15.el8.x86_64                          4/5 
  Installing       : vim-enhanced-2:8.0.1763-13.el8.x86_64                  5/5 
  Running scriptlet: vim-enhanced-2:8.0.1763-13.el8.x86_64                  5/5 
  Running scriptlet: vim-common-2:8.0.1763-13.el8.x86_64                    5/5 
  Verifying        : gpm-libs-1.20.7-15.el8.x86_64                          1/5 
  Verifying        : vim-common-2:8.0.1763-13.el8.x86_64                    2/5 
  Verifying        : vim-enhanced-2:8.0.1763-13.el8.x86_64                  3/5 
  Verifying        : vim-filesystem-2:8.0.1763-13.el8.noarch                4/5 
  Verifying        : which-2.21-12.el8.x86_64                               5/5 

Installed:
  gpm-libs-1.20.7-15.el8.x86_64         vim-common-2:8.0.1763-13.el8.x86_64    
  vim-enhanced-2:8.0.1763-13.el8.x86_64 vim-filesystem-2:8.0.1763-13.el8.noarch
  which-2.21-12.el8.x86_64             

Complete!
Removing intermediate container 1756750d1e03
 ---> 68f2b6584227
Step 7/15 : ENV MYPATH /usr/local
 ---> Running in 9626734e80b4
Removing intermediate container 9626734e80b4
 ---> ca54555aa07e
Step 8/15 : WORKDIR $MYPATH
 ---> Running in def9afa94368
Removing intermediate container def9afa94368
 ---> 2fe98cd6b5a4
Step 9/15 : ENV JAVA_HOME /usr/local/jdk1.8.0_261
 ---> Running in d11a3bbc9347
Removing intermediate container d11a3bbc9347
 ---> 580b4655df41
Step 10/15 : ENV CLASSPATH $JAVA_HOME/lib/dt.jar;$JAVA_HOME/lib/tools.jar
 ---> Running in a662118a881f
Removing intermediate container a662118a881f
 ---> 0f0c3eed7b1e
Step 11/15 : ENV CATALINA_HOME  /usr/local/apache-tomcat-9.0.37
 ---> Running in 420471056ea1
Removing intermediate container 420471056ea1
 ---> eab3fe5b5696
Step 12/15 : ENV CATALINA_BASH  /usr/local/apache-tomcat-9.0.37
 ---> Running in 8d41a754060b
Removing intermediate container 8d41a754060b
 ---> 076f1418b8b9
Step 13/15 : ENV PATH $PATH;$JAVA_HOME/bin;$CATALINA_lib;$CATALINA_HOME/bin
 ---> Running in a7c7d3ee3d9a
Removing intermediate container a7c7d3ee3d9a
 ---> 7c66f716e0d2
Step 14/15 : EXPOSE 8080
 ---> Running in 8ccf00a03786
Removing intermediate container 8ccf00a03786
 ---> 86cba0d544b1
Step 15/15 : CMD /usr/local/apache-tomcat-9.0.37/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.37/logs/catalina.out
 ---> Running in 14c24d5999b2
Removing intermediate container 14c24d5999b2
 ---> d023013d48b7
Successfully built d023013d48b7       #新镜像ID
Successfully tagged diytomcat:1.01

4、启动镜像,查看镜像列表

[root@fengfang ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
diytomcat           latest              d023013d48b7        30 minutes ago      641MB
entrypoint-test     latest              1332ea7ae09c        18 hours ago        215MB
cmdtest             latest              462e7d919412        18 hours ago        215MB
<none>              <none>              32c99d82cf43        18 hours ago        215MB
mycentos            1.01                c0cfb44a7745        20 hours ago        295MB
aaron/centos        1.0                 c20bce8652d2        25 hours ago        215MB
tomcat_aaron        1.0                 671de9f0cd4f        3 days ago          652MB
tomcat              9.0                 b4f6a90c69a4        4 days ago          647MB
tomcat              latest              b4f6a90c69a4        4 days ago          647MB
mysql               5.7                 8679ced16d20        5 days ago          448MB
nginx               latest              8cf1bfb43ff5        6 days ago          132MB
centos              latest              831691599b88        5 weeks ago         215MB
[root@fengfang ~]# 

运行镜像命令:

docker run -d -p 8080:8080 --name tomcat01 -v /home/lxh/test:/usr/local/apache-tomcat-9.0.37/webapps/test -v /home/lxh/tomcatlogs:/usr/local/apache-tomcat-9.0.37/logs diytomcat #diytomcat为镜像名称

5、访问测试

[root@fengfang ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
7050fc938250        diytomcat:1.01      "/bin/sh -c ‘/usr/lo…"   7 minutes ago       Up 7 minutes        0.0.0.0:8080->8080/tcp   tomcat01
[root@fengfang ~]# curl localhost:8080



<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Apache Tomcat/9.0.37</title>
        <link href="favicon.ico" rel="icon" type="image/x-icon" />
        <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <link href="tomcat.css" rel="stylesheet" type="text/css" />
    </head>

    <body>
        <div id="wrapper">
.........后面还有内容未展示出来

6、发布项目,因为做了挂载,所以直接在本地发布项目即可

创建目录 WEB-INF,然后创建web.xml文件,内容以下:

<?xml version="1.0" encoding="UTF-8"?>
   <web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                               http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
           version="2.5">

   

</web-app>

创建index.jsp文件,放在test目录下测试内容如下:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>首页</title>
<style>
    *
    padding:0;
    margin:0;
    font-family:"微软雅黑";

.header
    height:72px;
    background:#458fce ;

.header .logo
    color:#fff ;
    line-height:70px;
    font-size:30px;
    margin-left:20px;
    display:inline-block;
    text-align:center;


a 
    color: #fff ;
    text-decoration: none ;

.header .login
    float:right;
    color:#fff ;
    line-height:72px;
    margin-right:2px;
    display:inline-block;

.banner
    height:380px;
    overflow:hidden;
    background: #ddd;

</style>
</head>
<body>
    <div class="header">
        <div class="logo">web实践</div>
        <div class ="login">
            <a href ="javascript:void(0)">登录</a>
            <span>|</span> 
            <a href ="javascript:void(0)">故事</a>
        </div>
    </div>
</body>
</html>

通过命令:curl localhost:8080/test/index.jsp,则可以访问页面

我们还可以进入我们挂载的目录 :/home/lxh/tomcatlogs目录下,访问 catalina.out日志文件,里面的日志也是正常写入的。

访问页面如下图所示:

技术图片

 

 发布自己的镜像

1、在地址https://hub.docker.com/中注册一个自己的账号,里面有个dockerid,需要自己填写一个数字,比如自己的19830616,和别人不重复就行

2、在邮箱确认后,保证这个账号能正常登陆的。

3、使用docker login -u liuxh616@126.com

再输入密码就可以登陆了

4、登陆成功后,使用docker push diytomcat:tag,提交镜像到服务器上

5,若镜像没有版本号,可以使用docker tag 镜像id 镜像名称:版本号,给镜像增加版本号

6、docker push 到服务器上,尽量要带上版本号如:

docker push diytomcat:1.01

将自己的镜像发布到阿里云上去

1、登陆阿里云

2、找到容器镜像服务

3、新建一个命名空间,再创建一个镜像容器,然后再根据文档说明进行推送即可

 技术图片

 

c语言学习第六天(代码片段)

数组语法:类型数组名[元素个数];inta[6];//4*6字节charb[24];//1*24字节doublec[2];//2*8字节访问数组中的元素语法:数组名[元素下标]a[2];b[4];c[1];注意inta[6];a[0];//访问第一个元素a[6];//访问第七个元素出现数组越界。使用循环给数组赋值#in... 查看详情

第六天学习静态代理模式(代码片段)

静态代理模式packagelambdal;/**真实对象和代理对象都实现同一个接口*代理对象要代理真实角色的事情,所以要声明一个接口*通过接口调用真实对象需要做的事情,还可以做其它事情*实例化时只需要将真实对象传入代理对象即可*... 查看详情

vue第六天学习笔记之vuecli3详解(代码片段)

目录 1.VueCLI详解1.1Runtime-Compiler和Runtime-only的区别2.VueCLI33.箭头函数3.1箭头函数的基本使用3.2箭头函数参数和返回值3.3箭头函数中的this的使用4.vue-router详解4.1认识路由4.2前端路由的规则4.3vue-router基础1.VueCLI详解1.1Runtime-Compiler和Run... 查看详情

pyhon学习第六天代码块,小数据池(缓存机制,驻留机制),is==id=,字符编码(代码片段)

1.代码块  能够实现某项功能的:模块,函数,类,文件  ##在python的交互模式下,一行代码就是一个代码块分别储存在不同文件中2.  idis==和=  =是赋值  ==比较两边数据内容是否相等  is比较内存地址是否一致(内存里的id... 查看详情

第六天(代码片段)

第一部分函数初识 """函数:作用:1.简化代码2.把功能模块化"""#打印出5行,每行5个*print(("其他的代码块1"))foriinrange(5):print("*"*5)print("其他的代码块2")foriinrange(5):print("*"*5)print("其他的代码块3")一、函数的定义#函数名:标识符... 查看详情

stm32学习笔记(cubemx配hal)(第六天:前面内容的一个综合训练)(代码片段)

现在我们再网上找了一个小小的例子。我们可以综合做一下:首先:上电后LED1和LED2点亮,然后熄灭,高电平点亮(根据开发板电路来进行设定,比如野火的开发板就是低电平点亮的。)之后,上电... 查看详情

团队冲刺——第六天(代码片段)

今天学习了Activity的用法和Activity中使用fragment的方法,然后实战做了一下登陆注册功能。遇到困难在找到控件与保存数据方面不太懂。明天做出来完整登陆注册功能。今天所写做对的登陆和注册功能:packagecom.example.a15979.shudong;im... 查看详情

学习c语言第六天(代码片段)

一.多维数组元素的地址#include<stdio.h>intmain()intarr[3][4]=11,22,33,44,12,13,15,16,22,66,77,88;inti;intj;for(i=0;i<3;i++)for(j=0;j<4;j++)printf("add:0x%p,data:%d",&arr[i][j],arr[i][j]);printf("add:0x%p,data:%d",arr[i]+j,arr[i][j]);return0;二.二级指针  认知考虑... 查看详情

记账本开发记录——第六天(2020.1.22)(代码片段)

在学习JQ之前,我上网百度了一下,看看是否有学习该部分的必要。根据网友所说,虽然JQ的使用率不比以前,但作为一个十分经典的框架,仍然值得学习。现在很多框架都依赖于JQ,这点也是不容忽略的。在JQ中的AJAX也是个很多... 查看详情

算法练习-第六天(判断一个链表是否为回文结构)(代码片段)

...源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。👏👏👏哈喽!大家好& 查看详情

算法练习-第六天(判断一个链表是否为回文结构)(代码片段)

...源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。👏👏👏哈喽!大家好& 查看详情

学习数据结构的第六天(包括一些还没学习的,指导之后学习的要点)(代码片段)

现在看一下,set和map的作用,以及treeset的作用。对于以后还需要学哪些: 对于相应的时间复杂度的分析、对于排序的相应内容,都是需要再看的。什么最好、最坏之类的。自写数据结构对于leetcode相应代码的实现也要学,在... 查看详情

第六天(代码片段)

...容易遗忘。每天自己还是要多多操作一下。  一、学习的新知识1、保存txt文件小重山,打开、关闭文件。f.open(‘小重山‘,’r‘,encoding=‘utf8‘)              &nb... 查看详情

学习的第六天

12:49:25今天学习it这个行业已经第六天了 今天学的就是最简单的循环 叫while循环 这里肯定很多大牛 本人也是萌新 所以请大家照顾 当然我自己也会照顾我自己 因为既然选择了 就得去做人生的机会也... 查看详情

第六天的学习

<!DOCTYPEhtml><html><head> <metacharset="utf-8"> <title></title> <style> body{ padding:0auto; margin:0; } #rmb{ width:720px; height:620px; float: 查看详情

java学习第六天

1-键盘录入月份,输出对应的季节。一年有四季;3,4,5春季;6,7,8夏季;9,10,11秋季;12,1,2冬季publicclassDemo02Test{ publicstaticvoidmain(String[]args){ //键盘录入一个月份,用Scanner实现 Scannersc=newScanner(System.in); //接收数据 System.out.println 查看详情

手写rpc框架第六天负载均衡(代码片段)

手写RPC框架第六天负载均衡1.负载均衡策略假设有多个服务实例,每个实例提供相同的功能,为了提高整个系统的吞吐量,每个实例部署在不同的机器上。客户端可以选择任意一个实例进行调用,获取想要的结果... 查看详情

手写rpc框架第六天负载均衡(代码片段)

手写RPC框架第六天负载均衡1.负载均衡策略假设有多个服务实例,每个实例提供相同的功能,为了提高整个系统的吞吐量,每个实例部署在不同的机器上。客户端可以选择任意一个实例进行调用,获取想要的结果... 查看详情