0
点赞
收藏
分享

微信扫一扫

啦啦外卖v60.5系统独立版+平台用户端+骑手端+商家端小程序 安装配置使用教程

开源分享 03-17 18:30 阅读 2

Dockerfile文件

Dockerfile介绍

dockerfile是构建镜像的文件

1、编写dockerfile文件

2、docker build 构建成为一个镜像

3、doker run 运行镜像

4、docker push 发布镜像(Docker Hub 或者阿里云)

(a)、Dockerfile:构建文件定义了步骤

(b)、DockerImages是构建生成的镜像,最终发布和运行的产品

©、容器就是镜像运行起来的服务器

在这里插入图片描述

Dockerfile构建过程

在这里插入图片描述

FORM		  #基础镜像
MAINTAINER    #镜像是谁写的 邮箱+姓名
RUN 		  #镜像构建时要运行的命令
ADD    		  #要添加的内容
WORKDIR  	  #设置工作目录
VOLUME 		  #挂载的目录
EXPOSE 		  #保留端口的配置
CMD			  #指定容器要运行时执行的命令 , 只有最后一个会生效,可以被替代
ENTRYPOINT 	  #指定容器运行时要执行的命令    可以追加
ONBUILD 	  #当构建一个被继承的Dokcerfile这是时候会运行该指令
COPY  		  #类似ADD指令,将文件copy到镜像中
ENV			  #构建的时候设置环境变量

Dockerfile测试

[root@iZf8zhsqf64x47n1tpdy6oZ dockerfile]# cat Dockerfile-centos 
#编写Dockerfile文件
#基础镜像

FROM centos:7
#谁写的
MAINTAINER  packet<123456@qq.com>
#环境
ENV MYPATH /usr/local
#工作目录
WORKDIR $MYPATH

#添加一些信息
RUN yum -y install vim
RUN yum -y install net-tools
#暴露端口
EXPOSE 80
#echo 输出信息
CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash

#构建镜像
docker build -f /home/dockerfile/Dockerfile-centos -t mycentos:1.0 .

#运行镜像
[root@iZf8zhsqf64x47n1tpdy6oZ dockerfile]# docker run -it 4aa49c58348a /bin/bash
#发现进来就是local目录,这是工作目录的作用
[root@d7a0ad39c58c local]# pwd
/usr/local
[root@d7a0ad39c58c local]# ls
bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[root@d7a0ad39c58c local]# cd /
[root@d7a0ad39c58c /]# ls

anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr

#现在可以执行这些命令了,之前时执行不了的
[root@d7a0ad39c58c /]# ifconfig
[root@d7a0ad39c58c /]# vim anaconda-post.log


遇到的坑

  • 注意centos:7要写版本,不然执行不了, 好像8也不太行
  • docker build 最后有一个空格有一个点,需要注意

docker history 查看历史

[root@iZf8zhsqf64x47n1tpdy6oZ dockerfile]# docker history 4aa49c58348a
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
4aa49c58348a        16 minutes ago      /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/b...   0 B                 
d02ae184f173        16 minutes ago      /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "ec...   0 B                 
1070345e548d        16 minutes ago      /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "ec...   0 B                 
d66d848f1711        16 minutes ago      /bin/sh -c #(nop)  EXPOSE 80/tcp                0 B                 
0a5b48f4a277        16 minutes ago      /bin/sh -c yum -y install net-tools             241 MB              
bcf1338f8c9a        17 minutes ago      /bin/sh -c yum -y install vim                   296 MB              
7ad444664b62        17 minutes ago      /bin/sh -c #(nop) WORKDIR /usr/local            0 B                 
c048257c88b1        17 minutes ago      /bin/sh -c #(nop)  ENV MYPATH=/usr/local        0 B                 
a6651ce8816d        17 minutes ago      /bin/sh -c #(nop)  MAINTAINER packet<12345...   0 B                 
eeb6ee3f44bd        2 years ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0 B                 
<missing>           2 years ago         /bin/sh -c #(nop)  LABEL org.label-schema....   0 B                 
<missing>           2 years ago         /bin/sh -c #(nop) ADD file:b3ebbe8bd304723...   204 MB 
#创建两个dockerfile分别是dockerfile-cmd 与dockerfile-entrypoint-test
[root@iZf8zhsqf64x47n1tpdy6oZ dockerfile]# vim dockerfile-cmd-test
[root@iZf8zhsqf64x47n1tpdy6oZ dockerfile]# cat dockerfile-cmd-test 
FROM centos
CMD ["ls","-a"]
[root@iZf8zhsqf64x47n1tpdy6oZ dockerfile]# vim dockerfile-entrypoint-test
[root@iZf8zhsqf64x47n1tpdy6oZ dockerfile]# cat dockerfile-entrypoint-test 
FROM centos
ENTRYPOINT ["ls","-a"]

#构建镜像
[root@iZf8zhsqf64x47n1tpdy6oZ dockerfile]# docker build -f dockerfile-cmd-test -t dockerfile-cmd-test:1.0 .
Sending build context to Docker daemon 3.072 kB
Step 1/2 : FROM centos
 ---> 5d0da3dc9764
Step 2/2 : CMD ls -a
 ---> Running in 5eb2172a757f
 ---> 849d49cb4672
Removing intermediate container 5eb2172a757f
Successfully built 849d49cb4672

#构建镜像
[root@iZf8zhsqf64x47n1tpdy6oZ dockerfile]# docker build -f dockerfile-entrypoint-test -t dockerfile-entrypoint-test:1.0 .
Sending build context to Docker daemon 4.096 kB
Step 1/2 : FROM centos
 ---> 5d0da3dc9764
Step 2/2 : ENTRYPOINT ls -a
 ---> Running in 8554e0a5ab49
 ---> 5c40e329e0be
Removing intermediate container 8554e0a5ab49
Successfully built 5c40e329e0be



[root@iZf8zhsqf64x47n1tpdy6oZ dockerfile]# docker images
REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
dockerfile-entrypoint-test      1.0                 5c40e329e0be        14 seconds ago      231 MB
dockerfile-cmd-test             1.0                 849d49cb4672        2 minutes ago       231 MB
mycentos                        1.0                 4aa49c58348a        36 minutes ago      742 MB
<none>                          <none>              0146ba7c38c0        39 minutes ago      231 MB
tomcat01                        1.0                 0c109a855b95        3 days ago          684 MB
docker.io/portainer/portainer   latest              5f11582196a4        15 months ago       287 MB
docker.io/nginx                 latest              605c77e624dd        2 years ago         141 MB
docker.io/tomcat                9.0                 b8e65a4d736d        2 years ago         680 MB
docker.io/tomcat                latest              fb5657adc892        2 years ago         680 MB
docker.io/mysql                 5.7                 c20987f18b13        2 years ago         448 MB
docker.io/centos                7                   eeb6ee3f44bd        2 years ago         204 MB
docker.io/centos                latest              5d0da3dc9764        2 years ago         231 MB
docker.io/elasticsearch         7.6.2               f29a1ee41030        3 years ago         791 MB



#dockerfile-cmd-test             1.0                 849d49cb4672        2 minutes ago       231 MB
[root@iZf8zhsqf64x47n1tpdy6oZ dockerfile]# docker run 849d49cb4672
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
#却不能追加
[root@iZf8zhsqf64x47n1tpdy6oZ dockerfile]# docker run 849d49cb4672 -l
container_linux.go:290: starting container process caused "exec: \"-l\": executable file not found in $PATH"
/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:290: starting container process caused "exec: \"-l\": executable file not found in $PATH".

#dockerfile-entrypoint-test      1.0                 5c40e329e0be        14 seconds ago      231 MB
#可以追加
[root@iZf8zhsqf64x47n1tpdy6oZ dockerfile]# docker run 5c40e329e0be -l
total 56
drwxr-xr-x   1 root root 4096 Mar  9 02:39 .
drwxr-xr-x   1 root root 4096 Mar  9 02:39 ..
-rwxr-xr-x   1 root root    0 Mar  9 02:39 .dockerenv
lrwxrwxrwx   1 root root    7 Nov  3  2020 bin -> usr/bin
drwxr-xr-x   5 root root  340 Mar  9 02:39 dev
drwxr-xr-x   1 root root 4096 Mar  9 02:39 etc
drwxr-xr-x   2 root root 4096 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 4096 Sep 15  2021 lost+found
drwxr-xr-x   2 root root 4096 Nov  3  2020 media
drwxr-xr-x   2 root root 4096 Nov  3  2020 mnt
drwxr-xr-x   2 root root 4096 Nov  3  2020 opt
dr-xr-xr-x 114 root root    0 Mar  9 02:39 proc
dr-xr-x---   2 root root 4096 Sep 15  2021 root
drwxr-xr-x   1 root root 4096 Mar  9 02:39 run
lrwxrwxrwx   1 root root    8 Nov  3  2020 sbin -> usr/sbin
drwxr-xr-x   2 root root 4096 Nov  3  2020 srv
dr-xr-xr-x  13 root root    0 Mar  9 02:39 sys
drwxrwxrwt   7 root root 4096 Sep 15  2021 tmp
drwxr-xr-x  12 root root 4096 Sep 15  2021 usr
drwxr-xr-x  20 root root 4096 Sep 15  2021 var
[root@iZf8zhsqf64x47n1tpdy6oZ dockerfile]# 

在这里插入图片描述

制作Tomcat镜像

1、准备tomcat与jdk压缩包

2、上传至Linux

在这里插入图片描述

3、编写Dockerfile文件,官方命名Dockerfile , build会自动寻找这个文件,就不用 -f 操作

#基础镜像 ,如果不加版本可能会报错
FROM centos:7
#作者信息
MAINTAINER packet<123456@qq.com>

#复制文件readme.txt文件到 /usr/local/readme.txt
COPY readme.txt /usr/local/readme.txt

#使用Add命令,添加内容,该命令可以自动解压,解压到的路径时/usr/local
ADD jdk-8u11-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.86.tar.gz /usr/local/

#安装vim
RUN yum -y install vim

#设置一个环境变量,进入后可以直接进去工作目录
ENV MYPATH /usr/local
WORKDIR $MYPATH

#配置java环境变量和tomcat环境变量
#这里为什么时/usr/local,因为你解压的路径就是/usr/local,和配置linux是一样的
ENV JAVA_HOME /usr/local/jdk-8u11-linux-x64
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.86
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.86
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

#暴露端口号
EXPOSE 8080

#通过startup.sh启动tomcat ,&& 拼接
CMD /usr/local/apache-tomcat-9.0.86/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.86/bin/logs/catalina.out

4、构建镜像

当你用这个Dockerfile创建过一次,然后删除镜像后,重新构建,如果不写-f就会出现问题

docker build -f Dockerfile -t diytomcat:1.0 .

4、启动镜像

[root@iZf8zhsqf64x47n1tpdy6oZ ~]# docker run -d -p 9090:8080 -v /home/javaEnviroment/test:/usr/local/apache-tomcat-9.0.86/webapps/test -v /home/javaEnviroment/tomcatlogs/:/usr/local/apache-tomcat-9.0.86/logs cce5ec120242


--name:设置个名字
-v :挂载,将webapps/test文件挂载到主机内的地址中
		  将logs文件,挂载到主机外tomcatlogs文件中

上传到阿里云镜像

1、在阿里云创建一个仓库【容器镜像服务】

在这里插入图片描述

2、按照步骤来
在这里插入图片描述

#登录
docker login --username=aliyun0731938794 registry.cn-qingdao.aliyuncs.com
#打包成tag,必须这样 ,且名字是固定的,必须与仓库的名字一致
docker tag 镜像id registry.cn-qingdao.aliyuncs.com/wallet_packet/test1:镜像版本号
#推送到仓库
docker push registry.cn-qingdao.aliyuncs.com/wallet_packet/test1:镜像版本号

#举例
$ docker images
REPOSITORY                                                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
registry.aliyuncs.com/acs/agent                                    0.7-dfb6816         37bb9c63c8b2        7 days ago          37.89 MB
$ docker tag 37bb9c63c8b2 registry-vpc.cn-qingdao.aliyuncs.com/acs/agent:0.7-dfb6816
$ docker push registry-vpc.cn-qingdao.aliyuncs.com/acs/agent:0.7-dfb6816
举报

相关推荐

0 条评论