Docker使用之Dockerfile部署镜像

  • dockerfile已逐渐成为企业交付的标准,我们以后要发布项目,做镜像,就需要编写dockerfile文件。
  • DockerFile:构建文件,定义了一切的步骤,源代码
  • DockerImage:通过DockerFile构建生成的镜像,最终发布和运行产品
  • Docker容器:容器就是为镜像运行提供服务

DockerFile的指令

在这里插入图片描述

FROM:						# 基础镜像
MAINTAINER:					# 开发者:姓名+邮箱
WORKDIR:					# 镜像的工作目录
LABEL:						# 设置镜像的标签
VOLUME:						# 镜像挂载的目录
EXPOSE:						# 镜像的端口
CMD:						# 指定这个容器启动时要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT:					# 指定这个容器启动时要运行的命令,可以追加命令(可以在命令行后加指令)
COPY:						# 类似ADD,将文件拷贝到镜像中
ONBUILD:					# 当构建一个被继承DockerFile,这个时候会运行ONBUILD指令(触发指定)
ENV:						# 构建的时候设置环境变量
  • 查看centos的DockerFile
  • 尝试构建自己的centos,当然也可选用别的,先尝试,没什么可以一步到位
[root@swl123 ~]#
[root@swl123 ~]# cd /home/
[root@swl123  home]# ls
aaaaa.java  admin  ceshi  docker-test-volume  mysql
[root@swl123 home]# mkdir dockerfile
[root@swl123 home]# cd dockerfile/
[root@swl123 dockerfile]# ls
[root@swl123 dockerfile]# vim swl-centos
[root@swl123 dockerfile]# cat swl-centos
FROM centos
MAINTAINER swl<651930625@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@swl123 dockerfile]#

在这里插入图片描述

  • 构建,命令后面有个 .
[root@swl123 dockerfile]# docker build -f swl-centos -t swlcentos:1.0 .
....
....
Successfully built 0191db3c9405
Successfully tagged swlcentos:1.0
[root@swl123 dockerfile]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
swlcentos             1.0       0191db3c9405   2 minutes ago   302MB
mysql                 8.0.26    95db2e2bd882   30 hours ago    514MB
nginx                 latest    4cdc5dd7eaad   2 weeks ago     133MB
tomcat                9.0       36ef696ea43d   2 weeks ago     667MB
tomcat                latest    36ef696ea43d   2 weeks ago     667MB
elasticsearch         7.13.3    84840c8322fe   2 weeks ago     1.02GB
redis                 latest    08502081bff6   3 weeks ago     105MB
portainer/portainer   latest    580c0e4e98b0   4 months ago    79.1MB
hello-world           latest    d1165f221234   4 months ago    13.3kB

-f:dockerfile文件
-t:target目标镜像名

  • 测试运行,成功运行
[root@swl123 dockerfile]# docker run -it swlcentos:1.0
[root@7b1c5235cb97 local]# pwd
/usr/local
[root@7b1c5235cb97 local]#

关于docker run 的-it与-d的关系,请看:这位小哥的博客

在这里插入图片描述在这里插入图片描述

  • 查看镜像历史:docker history xxx
[root@swl123 dockerfile]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED          SIZE
swlcentos             1.0       0191db3c9405   28 minutes ago   302MB
tomcat02              1.0       95e5803af676   19 hours ago     672MB
mysql                 5.7       9f1d21c1025a   30 hours ago     448MB
mysql                 8.0.26    95db2e2bd882   30 hours ago     514MB
nginx                 latest    4cdc5dd7eaad   2 weeks ago      133MB
tomcat                9.0       36ef696ea43d   2 weeks ago      667MB
tomcat                latest    36ef696ea43d   2 weeks ago      667MB
elasticsearch         7.13.3    84840c8322fe   2 weeks ago      1.02GB
redis                 latest    08502081bff6   3 weeks ago      105MB
portainer/portainer   latest    580c0e4e98b0   4 months ago     79.1MB
hello-world           latest    d1165f221234   4 months ago     13.3kB
centos                latest    300e315adb2f   7 months ago     209MB
[root@swl123 dockerfile]# docker history 0191db3c9405
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
0191db3c9405   28 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin…   0B
6f7ecfe1baec   28 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B
9c5035e3862a   28 minutes ago   /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B
4e5f5743c5f9   28 minutes ago   /bin/sh -c #(nop)  EXPOSE 80                    0B
dada750b045b   28 minutes ago   /bin/sh -c yum -y install net-tools             27.5MB
cd49f49ee407   28 minutes ago   /bin/sh -c yum -y install vim                   64.8MB
d07c692132f0   28 minutes ago   /bin/sh -c #(nop) WORKDIR /usr/local            0B
86cd8f795951   28 minutes ago   /bin/sh -c #(nop)  ENV MYPATH=/usr/local        0B
72805c080bd8   28 minutes ago   /bin/sh -c #(nop)  MAINTAINER swl<651930625@…   0B
300e315adb2f   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:bd7a2aed6ede423b7…   209MB
[root@swl123 dockerfile]#

实战:

  1. 准备镜像文件,Tomcat压缩包,jdk的压缩包
[root@swl123 hzl-1]# pwd
/usr/local/hzl-1
[root@swl123 hzl-1]# ls
apache-tomcat-9.0.50.tar.gz  Dockerfile  hzl-wx-3.6.0.jar  jdk-8u291-linux-x64.tar.gz  readme.txt
[root@swl123 hzl-1]# ll
total 152800
-rw-r--r-- 1 root root  11507318 Jul 21 14:29 apache-tomcat-9.0.50.tar.gz
-rw-r--r-- 1 root root 144935989 Jun 22 15:43 jdk-8u291-linux-x64.tar.gz
-rw-r--r-- 1 root root        47 Jul 21 14:45 Dockerfile
-rw-r--r-- 1 root root        16 Jul 21 14:46 readme.txt
[root@swl123 hzl-1]# 

Dockerfile和readme.txt是新建的,jdk8和Tomcat9有需要下载到这里:
jdk8链接:https://pan.baidu.com/s/1vMWH4ksYLbj3vmSk4ac1rA
提取码:iqyg
–来自百度网盘超级会员V6的分享
Tomcat9链接:https://pan.baidu.com/s/1bpvxSvZZo1scRAU950RLEg
提取码:idm1
–来自百度网盘超级会员V6的分享

  1. 编写DockerFile文件,官方命令DockerFile,build会自动寻找这个文件,就不需要-f指定了
[root@swl123 hzl-1]# vim Dockerfile 
[root@swl123 hzl-1]# cat Dockerfile
FROM centos
MAINTAINER swl<651930625@qq.com>

COPY readme.txt /usr/local/hzl-1/readme.txt

ADD jdk-8u291-linux-x64.tar.gz /usr/local
ADD apache-tomcat-9.0.50.tar.gz /usr/local

RUN yum -y install vim

ENV MYPATH /usr/local/
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_291
ENV CLASSPATH $JAVA_HOME/lib/
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.50
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.50
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

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

在这里插入图片描述

  1. 构建镜像:docker build -t mytomcat .
    不用-f指定dockerfile文件,docker会自动寻找 Dockerfile
[root@swl123 hzl-1]# docker build -t mytomcat .
Sending build context to Docker daemon  156.5MB
Step 1/15 : FROM centos
 ---> 300e315adb2f
Step 2/15 : MAINTAINER swl<651930625@qq.com>
 ---> Using cache
 ---> 72805c080bd8
Step 3/15 : COPY readme.txt /usr/local/hzl-1/readme.txt
 ---> 242dc439b1c7
....
....
....
Step 15/15 : CMD /usr/local/apache-tomcat-9.0.50/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.50/bin/logs/catalina.out
 ---> Running in c4b8b1e6a4ac
Removing intermediate container c4b8b1e6a4ac
 ---> 33f852eb9e8a
Successfully built 33f852eb9e8a
Successfully tagged mytomcat:latest
[root@swl123 hzl-1]# docker images
REPOSITORY            TAG       IMAGE ID       CREATED              SIZE
mytomcat              latest    33f852eb9e8a   About a minute ago   650MB
swlcentos             1.0       0191db3c9405   5 hours ago          302MB
swl/centos            1.0       a281d33bf80c   18 hours ago         209MB
tomcat02              1.0       95e5803af676   23 hours ago         672MB
mysql                 5.7       9f1d21c1025a   35 hours ago         448MB
mysql                 8.0.26    95db2e2bd882   35 hours ago         514MB
nginx                 latest    4cdc5dd7eaad   2 weeks ago          133MB
tomcat                9.0       36ef696ea43d   2 weeks ago          667MB
tomcat                latest    36ef696ea43d   2 weeks ago          667MB
elasticsearch         7.13.3    84840c8322fe   2 weeks ago          1.02GB
redis                 latest    08502081bff6   3 weeks ago          105MB
portainer/portainer   latest    580c0e4e98b0   4 months ago         79.1MB
hello-world           latest    d1165f221234   4 months ago         13.3kB
centos                latest    300e315adb2f   7 months ago         209MB
[root@swl123 hzl-1]# 
  1. 启动镜像:docker run -d -p 9090:8080 --name mytomcat -v /usr/local/build/tomcat/test:/usr/local/apache-tomcat-9.0.50/webapps/test -v /usr/local/build/tomcat/logs/:/usr/local/apache-tomcat-9.0.50/logs mytomcat
[root@swl123  hzl-1]# docker run -d -p 9090:8080 --name mytomcat -v /usr/local/build/tomcat/test:/usr/local/apache-tomcat-9.0.50/webapps/test -v /usr/local/build/tomcat/logs/:/usr/local/apache-tomcat-9.0.50/logs mytomcat
[root@swl123  hzl-1]# docker exec -it d649be98abe1 /bin/bash
[root@d649be98abe1 local]# pwd
/usr/local
[root@d649be98abe1 local]# ls
apache-tomcat-9.0.50  bin  etc	games  hzl-1  include  jdk1.8.0_291  lib  lib64  libexec  sbin	share  src
  • 测试:curl localhost:9090
[root@swl123  hzl-1]# curl localhost:9090



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

  1. 编辑镜像(由于做了卷挂载,可以直接在本地编写项目发布)

在这里插入图片描述

  1. 发布镜像

DockerHub

  • 注册账号

  • 登录
    报错:Error response from daemon: Get https://registry-1.docker.io/v2/: read tcp 172.25.22.136:35350->107.23.149.57:443: read: connection reset by peer
    关闭防火墙试试?systemctl stop firewalld

[root@swl123  docker]# docker login -u hzlhub
Password: 
Error response from daemon: Get https://registry-1.docker.io/v2/: read tcp 172.25.22.133:45326->54.236.163.63:443: read: connection reset by peer
[root@swl123  docker]# firewall-cmd --query-port=443/tcp
no
[root@swl123  docker]# systemctl stop firewalld
[root@swl123  docker]# docker login -u hzlhub
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
  • 我又奇怪了,也不是没有尝试过网上的方法,只有关闭防火墙有效
  • 发布:docker push mytomcat
[root@swl123 docker]# docker push mytomcat
Using default tag: latest
The push refers to repository [docker.io/library/mytomcat]
af4e845b1054: Retrying in 1 second 
7ed05236e4be: Preparing 
ea22a385d602: Preparing 
e3a459387469: Retrying in 1 second 
2653d992f4ef: Preparing 
denied: requested access to the resource is denied
[root@swl123docker]# 

阿里云镜像服务器上

  1. 容器镜像服务->实例列表->+号创建
    在这里插入图片描述
  2. 创建命名空间
    在这里插入图片描述
  3. 创建镜像实例
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • docker流程在这里插入图片描述
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker部署Dockerfile是通过使用Docker来构建和运行镜像的一种方式。可以使用手动部署的方式来熟悉部署流程,也可以使用插件方式来编写Dockerfile文件。 对于手动部署,首先需要修改docker配置,开放远程部署(上传)端口。可以通过编辑docker.service文件,在ExecStart=后添加配置"-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock"来实现。 对于使用插件的方式,则是通过配置Dockerfile的命令参数来生成Dockerfile文件,并最终根据jarDockerfile构建镜像。 在进行Docker部署之前,首先需要进行Docker的安装和部署。具体的流程括配置Docker、测试Docker镜像的分层以及镜像的构建。 Docker部署Dockerfile的具体步骤括: 1. 配置Docker,确保远程部署(上传)端口已经开放。 2. 使用插件方式或手动方式编写Dockerfile文件。 3. 将需要的jarDockerfile放置在同一个目录下。 4. 使用命令行工具进入到该目录,并执行docker build命令来构建镜像。 5. 根据构建后的镜像,运行相应的容器。 通过以上步骤,就可以成功部署Dockerfile并运行相应的容器。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [docker实战之Dockerfile构建部署项目(三)](https://blog.csdn.net/weixin_42322925/article/details/121697564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Docker 1 (安装部署Dockerfile详解)](https://blog.csdn.net/qq_38664479/article/details/119488160)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手揽回忆怎么睡

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值