Docker 基础(四)DockerFile
程序员文章站
2022-06-03 11:34:26
...
DockerFile
初识 DockerFile
用来构建 docker 的命令脚本
每一步为一层
指令大写
vim docekerfile
# 基础镜像
FROM centos
# 挂载 【匿名挂载】
VOLUME ["volume01","volume02"]
# 输出
CMD echo "------end---------"
# 进入命令行
CMD /bin/bash
# -f 构建镜像的文件路径
# -t 镜像目名
# . 不能忘
docker build -f dockerfile -t fang/centos:1.0 .
后台运行:ctrl + shift +p + q
容器数据同步
docker --volumes-from
同一个文件夹!
docker run -it --name docker01 fang/centos:1.0
docker run -it --name docker02 --volumes-from docker01 fang/centos:1.0
docker run -it --name docker03 --volumes-from docker01 fang/centos:1.0
结论: 删除父容器并不影响子容器,两个子容器数据依然共享
mysql 数据同步【好像不行,mysql文件上锁,会出现已被另一个进程占用的错误】
docker run -d -p 3306:3306 -v /env/mysql/conf:/etc/mysql/conf.d -v /env/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=sasa --name mysql01 mysql:5.7
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=sasa --name mysql02 --volumes-from mysql01 mysql:5.7
DockerFile构建过程
基础知识
- 每个保留的关键字必须是大写字母
- 执行从上到下
- #表示注释
- 每层指令都会提交创建一个新的镜像,并提交
dockerfile是面向开发的,发布项目做镜像,需要编写dockerfile文件,easy
dockerfile 逐渐成为企业交付的标准
dockerimages:通过dockerfile构成的镜像,最终发布产品
docker容器:为镜像运行提供服务器
DockerFile命令
构建镜像命令
FROM # 基础镜像,从这里开始构建
MAINTAINER # 镜像的作者
RUN # 镜像构建时需要运行的命令
ADD # 例如 Tomcar.tar.gz 会自动解压
WORKDIR # 指定镜像的工作目录
VOLUME # 挂载卷
EXPOSE # 暴露端口
CMD # 指定容器启动运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定容器启动运行的命令,可以追加命令
ONBUILD # 当构建一个被继承的 DockerFile 时就会触发 ONBUILD 指令
COPY # 类似 ADD ,文件拷贝到镜像中
ENV # 构建设置环境变量
CMD 和 ENTRYPOINT 的区别
CMD # 指定容器启动运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定容器启动运行的命令,可以追加命令
cat dockerfile-test-cmd
FROM centos
CMD ["ls","-a"]
------------------------------
docker run testcmd
.
..
.dockerenv
bin
dev
-----------------------------
==由于 CMD 命令下 -l 替换了ls -a 命令,所以执行不成功==
docker run testcmd -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"-l\": executable file not found in $PATH": unknown.
cat dockerfile-test-entyrpoint
FROM centos
ENTRYPOINT ["ls","-a"]
------------------------------
docker run testentrypoint -l
total 0
drwxr-xr-x. 1 root root 6 Oct 30 10:45 .
drwxr-xr-x. 1 root root 6 Oct 30 10:45 ..
-rwxr-xr-x. 1 root root 0 Oct 30 10:45 .dockerenv
lrwxrwxrwx. 1 root root 7 May 11 2019 bin -> usr/bin
drwxr-xr-x. 5 root root 340 Oct 30 10:45 dev
drwxr-xr-x. 1 root root 66 Oct 30 10:45 etc
查看镜像构建过程命令
docker history image
实战测试
创建一个自己的centos
vim mydockerfile
FROM centos
MAINTAINER fang<15151119536>
ENV MYPATH /usr/local
WORKDIR $MYPATH
MAINTAINER fang<15151119536>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
docker build -f mydockerfile -t diycentos .
Tomcat 镜像
-
准备镜像文件 tomcat 压缩包,java 压缩包
[aaa@qq.com ~]# cd /env/tar/ && ls apache-tomcat-9.0.39.tar.gz jdk-8u261-linux-x64.tar.gz
-
编写DockerFile文件,官方名Dockerfile,build 时可不写 dockerfile 文件
vim Dockerfile FROM centos MAINTAINER fang<15151119536> COPY readme.md /usr/local/readme.md # ADD 自动解压 ADD jdk-8u261-linux-x64.tar.gz /usr/local/ ADD apache-tomcat-9.0.39.tar.gz /usr/local/ RUN yum -y install vim RUN yum -y install net-tools ENV MYPATH /usr/local/ WORKDIR $MYPATH ENV JAVA_HOME /usr/local/jdk1.8.0_261 ENV JRE_HOME /usr/local/jdk1.8.0_261/jre ENV CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.39 ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.39 ENV PATH $PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin EXPOSE 8080 CMD /usr/local/apache-tomcat-9.0.39/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.39/logs/catalina.out
推荐阅读
-
使用Dockerfile编译自己的docker镜像
-
React基础(四)- 获取对象的键和值
-
Docker 制作镜像Dockerfile和commit操作
-
JavaEE基础day02 1.定义Java中的变量 四类八种 2.变量定义和使用的注意事项 3.数据类型的转换、强制数据类型转换4.算数运算符、比较运算符、逻辑运算符、赋值运算符、三元运算符
-
mysql 索引的基础操作汇总(四)
-
Docker如何使用Dockerfile构建镜像
-
docker中Dockerfile方式建立镜像HelloWorld
-
详解docker中Dockerfile指令创建镜像
-
从零开始构建docker基础镜像的方法
-
Docker基础知识之Linux namespace图文详解