Docker基础:Dockerfile和镜像发布

1.镜像发布步骤

1、编写一个dockerfile文件

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

3、docker run 镜像

4、docker push 镜像(发布镜像到DockerHub、阿里云镜像仓库)

Dockerfile命令简述

命令详解:Docker-DockerFile指令详解_玉米丛里吃过亏的博客-CSDN博客_dockerfile删除指令

写好DockerFile后

2.构建镜像

docker build -f dockerfile文件名 -t 镜像名[:版本号] 文件所在目录路径(若是当前路径则写 . )

run 起来之后我们可以使用docker history 镜像id 查看镜像构建过程

RUN命令与CMD命令的区别在哪里?

简单说,RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;CMD命令则是在容器启动后执行。另外,一个 Dockerfile 可以包含多个RUN命令,但是只能有一个CMD命令。

注意,指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否则它会覆盖CMD命令。

CMD和ENTRYPOINT的区别在哪里?

CMD :指定容器启动的时候要运行的命令,只有最后一个会生效,不可追加(会报错)

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

#dockerfile的内容
FROM centos
CMD ["ls","-a"]
docker run 镜像名 -l(报错)

#dockerfile的内容
FROM centos
ENTRYPOINT ["ls","-a"]
docker run 镜像名 -l(不报错)

3.制作Tomcat镜像并发布镜像

在docker hub官网注册在虚拟机上完成登录

[root@localhost tomcat]# docker login -u returntmp 
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

1.准备镜像文件tomcat、jdk压缩包

[root@localhost tomcat]# ll
total 188356
-rw-r--r--. 1 root root  10595340 Jun  9 05:43 apache-tomcat-8.5.81.tar.gz
-rw-r--r--. 1 root root 182278184 Apr 27 02:41 jdk-18_linux-x64_bin.tar.gz
-rw-r--r--. 1 root root         0 Jul 16 22:16 readme.txt

2.编写dockerfile文件,文件名使用官方命名:Dockerfile ,build的时候会默认寻找当前目录下的文件,不需要使用-f参数指定

[root@localhost tomcat]# cat Dockerfile 

FROM centos
MAINTAINER returntmp(自己的用户名)<自己的邮箱名>

COPY readme.txt /usr/local/readme.txt

ADD jdk-18_linux-x64_bin.tar.gz  /usr/local/
ADD apache-tomcat-8.5.81.tar.gz  /usr/local/


ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk-18.0.1.1
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.81
ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.81
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

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

3.使用该Dockerfile构建镜像

[root@iZwz99sm8v95sckz8bd2c4Z tomcat]# docker build -t diytomcat:1.0 .

4.启动生成的镜像,构建Tomcat容器.

这里设置了数据卷,宿主机的/home/dockerfile/tomcat/test对应该容器的/usr/local/apache-tomcat-8.5.81/webapps/test。这样关于test项目的修复只需要在宿主机上修改就可以了,不需要进入到容器中修改。

[root@localhost tomcat]# docker run -d -p 8088:8080 --name diytomcat -v /home/dockerfile/tomcat/test:/usr/local/apache-tomcat-8.5.81/webapps/test diytomcat:1.0

5.在/home/dockerfile/tomcat/test的目录下,新建index.html 测试Tomcat是否能正常使用。

因为设置了卷挂载所以可以直接在宿主机中进行操作。

<!DOCTYPE html>
<html>
    <head>
         <meta charset="UTF-8"/>
        <title>这是个标题</title>
    </head>
    <body>
        <h1>这是一个一个简单的HTML</h1>
        <p>Hello World!</p>
    </body>
</html>

发布镜像到DockerHub

使用docker login -u 用户名 登陆后使用docker push命令推送镜像到DockerHub上的仓库

[root@localhost test]# docker push returntmp/diytomcat:1.0
The push refers to repository [docker.io/returntmp/diytomcat]
An image does not exist locally with the tag: returntmp/diytomcat
[root@localhost test]# docker tag diytomcat:1.0 returntmp/diytomcat:1.0
[root@localhost test]# docker images
REPOSITORY                TAG       IMAGE ID       CREATED          SIZE
returntmp/diytomcat       1.0       45391717b538   19 minutes ago   564MB
diytomcat                 1.0       45391717b538   19 minutes ago   564MB
my_centos01               1.0       f65ba7beac9e   2 days ago       312MB
my_centos                 1.0       c69a44ca3dc3   2 days ago       231MB
tom                       1.0       f6387f05c42f   6 days ago       684MB
mysql                     latest    7e7e458be53c   10 days ago      444MB
nginx                     latest    605c77e624dd   6 months ago     141MB
zookeeper                 latest    36c607e7b14d   6 months ago     278MB
tomcat                    latest    fb5657adc892   6 months ago     680MB
hello-world               latest    feb5d9fea6a5   9 months ago     13.3kB
centos                    latest    5d0da3dc9764   10 months ago    231MB
kibana                    7.6.2     f70986bc5191   2 years ago      1.01GB
elasticsearch             7.6.2     f29a1ee41030   2 years ago      791MB
java                      latest    d23bdf5b1b1b   5 years ago      643MB
mobz/elasticsearch-head   5         b19a5c98e43b   5 years ago      824MB
[root@localhost test]# docker push returntmp/diytomcat:1.0 
The push refers to repository [docker.io/returntmp/diytomcat]
12a3e34173f9: Pushed 
0c61aa3985aa: Pushing  318.6MB
0c61aa3985aa: Pushed 
74ddd0ec08fa: Mounted from library/centos 

1.0: digest: sha256:42da521e47e94ade18c14e244adb1a3822a14013380b62bc3ca265ea9039451d size: 1161

因为push的时候,镜像名前面需要加上用户名(如果用户名不是当前登录用户则会拒绝push请求),所以需要使用命令docker tag 镜像名 新的镜像名复制出一份镜像重新打个Tag。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

白木Channel

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

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

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

打赏作者

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

抵扣说明:

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

余额充值