Dockerfile介绍
Dockerfile 就是用来构建docker镜像的构建文件!命令脚本!
可以通过这个脚本生成一个镜像
dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!
Docker镜像逐渐成为企业交付的标准,必须要掌握!
步骤:开发,部罢,运维。..缺一不可!
DockerFile:构建文件,定义了一切的步骤,源代码
Dockerlmages:通过DockerFile 构建生成的镜像,最终发布和运行的产品!
Docker容器:容器就是镜像运行起来提供服务器
`[root@root docker-test-volume]# vi dockerfile1
[root@root docker-test-volume]# cat dockerfile1
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "---------end--------"
CMD /bin/bash`
启动自己的镜像
docker inspect 容器id 查看容器信息
在容器内建个文件
在虚拟机查看
DockerFile指令
FROM 基础镜像,一切从这里开始构建
MAINTATNER 镜像是谁写的,姓名+邮箱
RUN,镜像构建的时候需要运行的命令
ADD 步骤,tomcat镜像,这个tomcat压储包!添加内容
WORKDIR 镜像的工作目录 VOLUME 挂载的目录 EXPOSE 保留端口配置
CMD 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT 指定这个管器启动的时候要运行的命令,可以追加命令
ONBUILD 当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令,触发指令。
COPY 类似ADO,舒我们文件持贝到境像中 ENV 构建的时候设置环境变量!
实战测试
Docker Hub中99%镜像都是从这个基础镜像过来的FROM scratch,然后配置需要的软件和配置来进行的构建
创建一个自己的centos
Centos8于2021年年底停止了服务,大家再在使用yum源安装时候,出现下面错误“错误:Failed to download metadata for repo ‘AppStream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist”
所以我修改了配置
或者FROM centos 改为 FROM centos:7
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum makecache
RUN yum update -y
RUN yum -y install vim
docker build -f mydockerfile-centos -t mycentos:0.1 .(运行)
测试
实战: Tomcat镜像
1.准备镜像文件tomcat压缩包,jdk压缩包
2.编写dockerfile文件,官方命名Dockerfile,build会自动寻找这个文件,就不需要-f指定了!
FROM centos
MAINTAINER wangjn1148274553@qq.com
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u341-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.68.tar.gz /usr/local/
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum makecache
RUN yum update -y
RUN yum -y install vim
ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /uar/local/apache-tomcat-9.0.68
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.68ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.68/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.68/bin/logs/catalina.out
3.构建镜像
docker build -t diytomcat .
4.启动镜像
docker run -d -p 9090:8080 --name wangjintomcat -v /home/build/tomcat/test:/usr/local/apache-tomcat-9.0.68/webapps/test -v /home/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.68/logs diytomcat
发布自己的镜像
DockerHub
1.地址https://hub.docker.com/
2.确定账户可以登录
3.在我们服务器提交自己的镜像
4.登录完毕后就可以提交镜像了,就是一步 docker push
docker tag id 版本号
当docker push时报如下错误:
denied: requested access to the resource is denied
存在两种可能性:
- docker未登录
解决方法:docker login
- 如果已经登陆了还是报错,应将镜像改到自己账户名下
解决方法:
1.先列出所有镜像
docker images
2.将要发布的镜像改到自己账户名下。
例:我的账户名:aaaa
我的镜像:docker_name
docker tag docker_name aaaa/docker_name
3.再次发布镜像
docker push aaaa/docker_name
成功解决。
提交的时候也是按照镜像层级来提交的!
发布到阿里云
1.登录阿里云
2.找到容器镜像服务
3.创建命名空间
4.创建容器镜像
5.上传(阿里云官方有教程)