#https://www.bilibili.com/video/BV1og4y1q7M4?p=28&spm_id_from=pageDriver 狂神视频 

dcoekr 是用来构建docker 的镜像文件,命令参数脚本
编写一个dockerfile 文件
docker build 构建镜像
docker run 运行这个镜像。
docker push 发布镜像(dockerhub,阿里云镜像仓库)
官方,centos的地址

FROM scratch
ADD centos-7-x86_64-docker.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="20201113" \
    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-11-13 00:00:00+00:00"
 
CMD ["/bin/bash"]官方镜像只有基础包。需要自己去搭建自己的镜像。

docker 基础知识,
每个关键字指令,必须是大大写字母,
执行从上到下,顺序执行
#表示注释
每个指令,都会创建提交一下新的镜像层,bingtij

docker file 是通常面向开发的,发布项目,做镜像,就需要编写dockerfile 文件,这个文件十分简单。
docker 镜像逐渐成为了,企业交付的标准。
步骤开发生成镜像。

dockerfile构建文件定义了一切步骤,源代码
dockerimages通过dockerfile构建生成的镜像,最终发布和运行的产品,

docker 容器,容器就是镜像运行起来提供服务器
利用下列命令后构建自己镜像。

FROM	基础镜像,一切从这里构建
MAINTAINER #镜像是谁写的,姓名+邮箱,
RUN		#镜像构建的时候需要运行的命令
ADD		#步骤,tomact 镜像,这个tomcat 压缩包,添加内容
WORKDIR	#镜像的工作目录、/
VOLUME	#镜像的工作目录
EXPOSE 	#暴露端口配置
RUN   # 运行镜像成为容器
CMD    #z指定这个容器启动的时候需要运行的命令只有最后一个生效可被替代
ENTRYPOINT # 指定这个容器启动的时候需要运行的命令可以追加命令
ONBUIL # 当构建镜像一个被继承dockerfile这个时候就会运行ONBUTILO的指令,触发指令
COPY #类似ADD 将我们文件拷贝到镜像中
ENY #构建的时候设置环境变量!

docker HUB99%镜像都是从这个基础镜像FROM,然后配置时候需要软件和配置过来的,
FROM scratch
ADD centos-7-x86_64-docker.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="20201113"
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-11-13 00:00:00+00:00"

创建自己的centos

运行第一步,[root@localhost ~]# mkdir dcoerfile
 打开另一个终端输入下面的
       [root@localhost ~]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
kuangshen/centos      latest    1db844ed918a   47 hours ago    231MB
tomcat0001            1.0       09ef6b2e826f   3 days ago      684MB
tomcat0001            latest    a22c9a74a6f8   3 days ago      684MB
tomcat                latest    13b1026f5ad2   3 days ago      684MB
nginx                 latest    605c77e624dd   7 days ago      141MB
tomcat                9.0       b8e65a4d736d   2 weeks ago     680MB
tomcat                <none>    fb5657adc892   2 weeks ago     680MB
redis                 latest    7614ae9453d1   2 weeks ago     113MB
mysql                 5.7       c20987f18b13   2 weeks ago     448MB
centos                latest    5d0da3dc9764   3 months ago    231MB
portainer/portainer   latest    580c0e4e98b0   9 months ago    79.1MB
elasticsearch         7.6.2     f29a1ee41030   21 months ago   791MB
运行第二步
 [root@localhost ~]# docker run -it centos
  #切回终端,
[root@localhost ~]# ls
anaconda-ks.cfg     hi.sh
dcoerfile           javase8u211-later-archive-downloads.html
docker              mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
docker-test-volume  --restart=alwys
hava.java           shcode
hellworld.sh
[root@localhost ~]# cd dcoerfile  
[root@localhost dcoerfile]# ls
 
[root@localhost dcoerfile]# vim mydockerfile
#输入下面的代码
FROM centos
MAINTAINER lingluan<1186960510@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
通过这个文件构建镜像。
#运行第三步
[root@localhost dockerfile]# docker build -f mydockerfile -t mycentos:0.1 . 这里是空格点
Sending build context to Docker daemon  2.048kB
Step 1/10 : FROM centos
 ---> 5d0da3dc9764
Step 2/10 : MAINTAINER lingluan<1186960510@qq.com>
 ---> Running in 4871eb77269f
Removing intermediate container 4871eb77269f
 ---> 301faa5505ff
Step 3/10 : ENV MYPATH /usr/local
 ---> Running in 9885fc6204de
Removing intermediate container 9885fc6204de
 ---> 35db68330bf9
Step 4/10 : WORKDIR $MYPATH
 ---> Running in 29023743a2e2
 
 
 [root@localhost dockerfile]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED          SIZE
mycentos              0.1       dc825ed1d5e4   38 seconds ago   326MB
kuangshen/centos      latest    1db844ed918a   2 days ago       231MB
tomcat0001            1.0       09ef6b2e826f   3 days ago       684MB
tomcat0001            latest    a22c9a74a6f8   3 days ago       684MB
tomcat                latest    13b1026f5ad2   3 days ago       684MB
nginx                 latest    605c77e624dd   7 days ago       141MB
tomcat                9.0       b8e65a4d736d   2 weeks ago      680MB
tomcat                <none>    fb5657adc892   2 weeks ago      680MB
redis                 latest    7614ae9453d1   2 weeks ago      113MB
mysql                 5.7       c20987f18b13   2 weeks ago      448MB
centos                latest    5d0da3dc9764   3 months ago     231MB
portainer/portainer   latest    580c0e4e98b0   9 months ago     79.1MB
elasticsearch         7.6.2     f29a1ee41030   21 months ago    791MB
[root@localhost dockerfile]# docker run -it mycentos:0.1  进入构建的镜像创建的容器
[root@b7b5d47ebb29 local]# pwd 默认的目录
/usr/local
[root@b7b5d47ebb29 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 147  bytes 6494 (6.3 KiB)
        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
 

docker history 容器id 查看容器是怎么一步步生成的,

[root@localhost dockerfile]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
mycentos              0.1       dc825ed1d5e4   8 minutes ago   326MB
kuangshen/centos      latest    1db844ed918a   2 days ago      231MB
tomcat0001            1.0       09ef6b2e826f   3 days ago      684MB
tomcat0001            latest    a22c9a74a6f8   3 days ago      684MB
tomcat                latest    13b1026f5ad2   3 days ago      684MB
nginx                 latest    605c77e624dd   7 days ago      141MB
tomcat                9.0       b8e65a4d736d   2 weeks ago     680MB
tomcat                <none>    fb5657adc892   2 weeks ago     680MB
redis                 latest    7614ae9453d1   2 weeks ago     113MB
mysql                 5.7       c20987f18b13   2 weeks ago     448MB
centos                latest    5d0da3dc9764   3 months ago    231MB
portainer/portainer   latest    580c0e4e98b0   9 months ago    79.1MB
elasticsearch         7.6.2     f29a1ee41030   21 months ago   791MB
[root@localhost dockerfile]# docker history   mycentos  后面应该跟容器id
Error response from daemon: No such image: mycentos:latest
[root@localhost dockerfile]# docker history dc825ed1d5e  可以查看这个容器是怎么做起来的,
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
dc825ed1d5e4   9 minutes ago    /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin…   0B
3ff91ddeb17d   9 minutes ago    /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B
47df6fb91527   9 minutes ago    /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B
42f3ab121cb6   9 minutes ago    /bin/sh -c #(nop)  EXPOSE 80                    0B
ac0900524521   9 minutes ago    /bin/sh -c yum -y install net-tools             28.4MB
693a5e9d0c41   10 minutes ago   /bin/sh -c yum -y install vim                   66.3MB
8a988f97eafb   19 minutes ago   /bin/sh -c #(nop) WORKDIR /usr/local            0B
35db68330bf9   19 minutes ago   /bin/sh -c #(nop)  ENV MYPATH=/usr/local        0B
301faa5505ff   19 minutes ago   /bin/sh -c #(nop)  MAINTAINER lingluan<11869…   0B
5d0da3dc9764   3 months ago     /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
<missing>      3 months ago     /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B
<missing>      3 months ago     /bin/sh -c #(nop) ADD file:805cb5e15fb6e0bb0…   231MB
[root@localhost dockerfile]#

CMD 和ENTRYPOINT 区别

CMD 		#指定这个容器的时候要运行的命令,只有最后一个才会生效,可被替代
ENTRYPOINT	#指定这个容器的时候要运行的命令,可以追加指令

测试CMD

#编写dockerfile文件
[root@localhost ~]# vim dockerfile-cmd-test
FROM centos
CMD ["ls","-a"]
#构建镜像
[root@localhost ~]# docker build -f dockerfile-cmd-test -t cmdtest .
Sending build context to Docker daemon  645.2MB
#run 运行  发现命令ls -a命令生效
 
 [root@localhost ~]# docker run d8eecbfcc40d
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
#想追加一个命令-l ls -al
[root@localhost ~]# docker run d8eecbfcc40d -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.
#cmd 的清理下 -l 替换了["ls","-l"]命令,-l 不是命令所以报错

测试ENTRYPOINT

[root@localhost ~]#vim dockerfile-cmd-entory
FROM centos
CMD ["ls","-a"]
[root@localhost ~]# docker build -f dockerfile-cmd-entory -t entorypoint-test .
Sending build context to Docker daemon  645.2MB
Step 1/2 : FROM centos
 ---> 5d0da3dc9764
Step 2/2 : ENTRYPOINT ["ls","-a"]
 ---> Running in 74443fa6a1d3
Removing intermediate container 74443fa6a1d3
 ---> f330c8fbdcd4
Successfully built f330c8fbdcd4
Successfully tagged entorypoint-test:latest
[root@localhost ~]# docker run f330c8fbdcd4
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
 #追加命令直接拼接在我们的ENTRYPOINT 命令的后面
[root@localhost ~]# docker run f330c8fbdcd4 -l
total 0
drwxr-xr-x   1 root root   6 Jan  7 03:17 .
drwxr-xr-x   1 root root   6 Jan  7 03:17 ..
-rwxr-xr-x   1 root root   0 Jan  7 03:17 .dockerenv
lrwxrwxrwx   1 root root   7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x   5 root root 340 Jan  7 03:17 dev
drwxr-xr-x   1 root root  66 Jan  7 03:17 etc
drwxr-xr-x   2 root root   6 Nov  3  2020 home
lrwxrwxrwx   1 root root   7 Nov  3  2020 lib -> usr/lib
lrwxrwxrwx   1 root root   9 Nov  3  2020 lib64 -> usr/lib64
drwx------   2 root root   6 Sep 15 14:17 lost+found
drwxr-xr-x   2 root root   6 Nov  3  2020 media
drwxr-xr-x   2 root root   6 Nov  3  2020 mnt
drwxr-xr-x   2 root root   6 Nov  3  2020 opt
dr-xr-xr-x 120 root root   0 Jan  7 03:17 proc
dr-xr-x---   2 root root 162 Sep 15 14:17 root
drwxr-xr-x  11 root root 163 Sep 15 14:17 run
lrwxrwxrwx   1 root root   8 Nov  3  2020 sbin -> usr/sbin
drwxr-xr-x   2 root root   6 Nov  3  2020 srv
dr-xr-xr-x  13 root root   0 Jan  6 06:51 sys
drwxrwxrwt   7 root root 171 Sep 15 14:17 tmp
drwxr-xr-x  12 root root 144 Sep 15 14:17 usr
drwxr-xr-x  20 root root 262 Sep 15 14:17 var

Dockerfile很多命令相似的,

准备tomcat 压缩包jdk的压缩包

FROM centos
MAINTAINER lingluan<1186960510@qq.com>
 
COPY readme.txt /usr/local/readame.txt
 
ADD jdk-8u181-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.7.tar.gz /usr/local/
 
RUN yum -y install vim
 
ENV MYPATH /usr/local
WORKDIR $MYPATH
 
ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.7
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.7
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
 
EXPOSE 8080
 
CMD /usr/local/apache-tomcat-9.0.7/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.7/bin/logs/catalina.out
/bin/sh: /usr/local/apache-tomcat-9.0.22/bin/startup.sh: Permission denied
docker build -t diytomcat .
Sending build context to Docker daemon  840.3MB
Step 1/15 : FROM centos
 ---> 5d0da3dc9764
Step 2/15 : MAINTAINER lingluan<1186960510@qq.com>
 ---> Using cache
 ---> 301faa5505ff
Step 3/15 : COPY readme.txt /usr/local/readame.txt
 ---> Using cache
 ---> feefda9664ab
Step 4/15 : ADD jdk-8u181-linux-x64.tar.gz /usr/local/
 ---> 862351dbf096
Step 5/15 : ADD apache-tomcat-9.0.7.tar.gz /usr/local/
 ---> 7b29d03f0196
Step 6/15 : RUN yum -y install vim
 ---> Running in d64eb090b4c2
CentOS Linux 8 - AppStream                      1.4 MB/s | 8.4 MB     00:06
CentOS Linux 8 - BaseOS                         5.0 MB/s | 4.6 MB     00:00
CentOS Linux 8 - Extras                          16 kB/s |  10 kB     00:00
Last metadata expiration check: 0:00:01 ago on Fri Jan  7 04:37:00 2022.
Dependencies resolved.
================================================================================
 Package             Arch        Version                   Repository      Size
================================================================================
Installing:
 vim-enhanced        x86_64      2:8.0.1763-16.el8         appstream      1.4 M
Installing dependencies:
 gpm-libs            x86_64      1.20.7-17.el8             appstream       39 k
 vim-common          x86_64      2:8.0.1763-16.el8         appstream      6.3 M
 vim-filesystem      noarch      2:8.0.1763-16.el8         appstream       49 k
 which               x86_64      2.21-16.el8               baseos          49 k
 
Transaction Summary
================================================================================
Install  5 Packages
 
[root@localhost ~]# docker run -d -p 9090:8080 --name lingluantomcat01 -v /root/lingluan/build/tomcat/test/:/url/local/apache-tomcat-9.0.7/webapps/test -v /root/lingluan/build/tomcat/tomcatlogs/:/url/local/apache-tomcat-9.0.7/lo
 
cd /root/lingluan/build/tomcat/test