从小白到大神之路之学习运维第73天-------基于Dockerfile构建镜像应用(构建Tomcat镜像、MySQL、LNMP、Redis、面试题《CMD、ENTRYPOINT与RUN命令对比》)

第四阶段

时  间:2023年8月3日

参加人:全班人员

内  容:

基于Dockerfile构建镜像应用

目录

一、Dockerfile构建Tomcat镜像

1、建立工作目录

2、编写Dockerfile文件

3、构建镜像

4、测试容器

5、浏览器访问测试:

二、Dockerfile构建MySQL镜像

1、建立工作目录

2、编写Dockerfile文件

3、构建镜像

4、测试容器

三、Dockerfile构建LNMP镜像

1、建立工作目录

2、编写Dockerfile文件

3、构建镜像

4、测试容器

5、浏览器访问测试:

四、Dockerfile构建Redis镜像

1、建立工作目录

2、编写Dockerfile文件

3、构建镜像

4、测试容器

五、Dockerfile面试题

CMD、ENTRYPOINT与RUN命令对比

(一)CMD命令

1、建立工作目录

2、编写Dockerfile文件

3、生成新的镜像 secondtonone1/alpine-cmd 

4、生成后生成容器

(二)RUN命令

1、生成镜像 

2、生成容器并启动 

(三)ENTRYPOINT 

1、生成镜像 

2、生成容器并启动 

(四)RUN和CMD、ENTRYPOINT支持参数形式命令 :

1、生成镜像

2、运行容器 :


一、Dockerfile构建Tomcat镜像

1、建立工作目录

[root@huyang1 ~]# mkdir tomcat

[root@huyang1 ~]# cd tomcat/

[root@huyang1 tomcat]# ls

apache-tomcat-8.5.40.tar.gz  jdk-8u191-linux-x64.tar.gz

[root@huyang1 tomcat]# tar xf

jdk-8u191-linux-x64.tar.gz

[root@huyang1 tomcat]# tar xf

apache-tomcat-8.5.40.tar.gz

2、编写Dockerfile文件

[root@huyang1 tomcat]# vim Dockerfile

3、构建镜像

[root@huyang1 tomcat]# docker build -t tomcat:new .

[root@huyang1 ~]# docker images tomcat:new

4、测试容器

[root@huyang1 tomcat]# docker run -d -p 8080:8080 --name tomcat-test  tomcat:new

5、浏览器访问测试:

http://192.168.100.131:8080

二、Dockerfile构建MySQL镜像

1、建立工作目录

[root@huyang1 ~]# mkdir mysql

[root@huyang1 ~]# cd mysql/

2、编写Dockerfile文件

[root@huyang1 mysql]# vim Dockerfile

[root@localhost mysql]# cat mysql.sh

3、构建镜像

[root@huyang1 mysql]# docker build -t mysql:new .

[root@huyang1 mysql]# docker run -d -p 3306:3306 --name mysql-test mysql:new

4、测试容器

[root@huyang1 mysql]# yum -y install mariadb mariadb-devel

[root@huyang1 mysql]# mysql -h 192.168.200.111 -u root -P 3306 -p123456

三、Dockerfile构建LNMP镜像

1、建立工作目录

[root@huyang1 ~]# mkdir lnmp/

[root@huyang1 ~]# cd lnmp/

2、编写Dockerfile文件

[root@huyang1 lnmp]# vim Dockerfile

[root@localhost lnmp]# vim mysql.sh

[root@localhost lnmp]# vim index.php

[root@localhost lnmp]# vim default.conf

[root@huyang1 lnmp]# vim run.sh

3、构建镜像

[root@huyang1 lnmp]# docker build -t lnmp:new .

[root@huyang1 lnmp]# docker images lnmp

4、测试容器

[root@huyang1 lnmp]# docker run -d -p 80:80 -p 3306:3306 -p 9000:9000 --name lnmp-test  lnmp:new

  备注:每一个端口都必须加上-p选项,否则不启动!

5、浏览器访问测试:

http://192.168.100.131/index.php

四、Dockerfile构建Redis镜像

1、建立工作目录

[root@huyang1 ~]# mkdir redis

[root@huyang1 ~]# cd redis/

2、编写Dockerfile文件

[root@huyang1 redis]# vim Dockerfile

3、构建镜像

[root@localhost redis]# docker build -t redis:new .

[root@localhost redis]# docker images redis:new

4、测试容器

[root@localhost redis]# docker run -d -p 6379:6379 --name redis-test  redis:new

[root@localhost redis]# rpm -ivh /root/epel-release-latest-7.noarch.rpm

[root@localhost redis]# yum -y install redis

[root@localhost redis]# redis-cli -h localhost -a 123456

五、Dockerfile面试题

CMD、ENTRYPOINT与RUN命令对比

(一)CMD命令

        是在容器启动后执行的命令,一个Dockerfile可以有多个CMD,但是只有最后一个CMD生效。当容器启动时如果指定了命令,那么CMD的命令将被忽略。

例:

下载alpine镜像

docker pull alpine

1、建立工作目录

2、编写Dockerfile文件

3、生成新的镜像 secondtonone1/alpine-cmd 

docker build -t secondtonone1/alpine-cmd .

4、生成后生成容器

docker run --rm --name cmd secondtonone1/alpine-cmd

可以看到输出Docker了 

接下来我们在容器启动时后边增加一个命令

docker run --rm -it --name cmd

secondtonone1/alpine-cmd sh

此时进入了容器内部,执行了sh命令。Dockerfile中的CMD被忽略了。 

(二)RUN命令

        是在构建镜像时执行的命令,我们可以安装一些应用。

例:Dockerfile文件如下:

1、生成镜像 

docker build -f Dockerfile -t cmd2 .

2、生成容器并启动 

docker run -it --rm  cmd2

可以看到容器启动后调用了cmd命令netstat 

(三)ENTRYPOINT 

        和CMD不同,他不会被docker启动后执行的命令覆盖

例:Dockerfile文件如下:

1、生成镜像 

docker build -f Dockerfile -t cmd3 .

2、生成容器并启动 

docker run -it --rm  cmd3 /bin/bash

可以看到容器启动后并没有执行/bin/bash命令,而是调用了ENTRYPOINT命令netstat 

(四)RUN和CMD、ENTRYPOINT支持参数形式命令 :

1、生成镜像

docker build -f ./Dockerfile -t cmd4 .

2、运行容器 :

docker run -it --rm cmd4

可以看到输出了Hello, Docker! 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

人间打气筒(Ada)

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值