Dockfile 是用来构建镜像的文件,命令参数脚本
构建步骤:
基础知识:
dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,文件也很简单
Docker镜像逐渐成为企业交付的标准,需要掌握
DockerFile:构建文件,定义了一切的步骤,源代码
DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品
Docker容器:容器就是镜像运行起来提供服务器
Dockerfile指令
eg1: 自己创建一个centos镜像,带有ifconfig和vim命令
官方的centos镜像是没有vim和ifconfig命令的
1.写Dockerfile文件
FROM centos
MAINTAINER ldj<666@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
2.之后构建镜像通过命令
docker build -f /root/ldj/docker-file/dockerfile2-centos -t ldj-centos:1.0 .
3.成功
通过docker history 查看构建历史
eg2,CMD和ENTRYPOINT的区别
cmd:指定这个容器启动的时候运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT 指定这个容器启动的时候要运行的命令,可以追加命令
演示 CMD命令
脚本内容
FROM centos
CMD ["ls","-a"]
1.写一个DockerFile 文件
[root@l4 docker-file]# docker run eee738131140 -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.
ERRO[0000] error waiting for container: context canceled
[root@l4 docker-file]#
3.如果写成docker run eee738131140 ls -h /root不会报错,ls -h /root是可以运行的命令
[root@l4 docker-file]# docker run eee738131140 ls -h /root
anaconda-ks.cfg
anaconda-post.log
original-ks.cfg
[root@l4 docker-file]# docker run eee738131140 ls -h /home
[root@l4 docker-file]#
演示ENTRYPOINT
dockefile内容
FROM centos
ENTRYPOINT ["ls","-a"]
2.构建镜像
3.运行镜像
docker run bf83f4af585c
[root@l4 docker-file]# docker run bf83f4af585c
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
3.追加命令,不会被覆盖
docker run bf83f4af585c -h
[root@l4 docker-file]# docker run bf83f4af585c -h
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
eg3 自己制作一个tomcat 镜像
编写dockfile文件,官方命名Dockerfile,build会自动寻找这个文件,就不需要-f指定
1.自己写一个Dockfile
FROM centos
MAINTAINER ldj<666@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-17_linux-x64_bin.tar.gz /usr/local
ADD apache-tomcat-9.0.54.tar.gz /usr/local
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk-17
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.54
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.54
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.54/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.54/bin/logs/catalina.out
2.构建镜像
docker build -t diytomcat .
3.启动镜像
[root@l4 tomcat]# docker run -d -p 8088:8080 --name ldjtomcat -v /root/ldj/tomcat/test:/usr/local/apache-tomcat-9.0.54/webapps/test -v /root/ldj/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.54/logs diytomcat
a9ad1a474cacf58f729dad039df3b3dbbe7dc737294db6aa9275c140c50b7e43
进入tomcat镜像成功
[root@l4 test]# vim ldd.jsp
[root@l4 test]# pwd
/root/ldj/tomcat/test
[root@l4 test]#
测试成功
5.发布镜像
[root@l4 tomcatlogs]# docker login --help
Usage: docker login [OPTIONS] [SERVER]
Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.
Options:
-p, --password string Password
--password-stdin Take the password from stdin
-u, --username string Username
1.登录成功
提交镜像
docker tag 10ed4ccc76de ldj/centos:1.0
docker push ldj/centos:1.0
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_38304320/article/details/120812153
内容来源于网络,如有侵权,请联系作者删除!