文章目录
- Dockerfile
- 构建过程
- 保留字简介
- 案例
- 虚悬镜像
- Docker微服务实战
Dockerfile
Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。
构建三步骤
- 编写Dockerfile文件
- docker build命令构建镜像
- docker run 依镜像运行容器实例
构建过程
Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维
保留字简介
FROM
- 当前镜像是基于哪个镜像,第一条必须是from
MAINTAINER
- 谁做的
RUN
- 在docker build时运行
- RUN yum -y install vim
EXPOSE
- 当前容器对外暴露的端口
WORKDIR
- 指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
- ubuntu登入进去 pwd 是 /
- tomcat登入进去 pwd 是 /usr/local/tomcat
USER
- 指定该镜像以什么样的用户去执行,如果都不指定,默认是root
ENV
- 设置环境变量
- 一般和WORKDIR 用 前面ENV定义 后面WORKDIR 取值
ADD
- 将宿主机目录下的文件拷贝进镜像且会自动处理uRL和解压tar压缩包
- COPY+解压
COPY
- 类似ADD 拷贝文件和目录到镜像中
VOLUME
- 容器卷
CMD
- 启动后要干的事情 docker run 执行
- CMD会被docker run 命令覆盖 只有最后一个命令生效
- 加了 /bin/bash 后 不能直接访问8080端口,原因是把之前的覆盖了
ENTRYPOINT
案例
centos
docker run -it centos镜像id /bin/bash # 没有vim ifconfig jdk环境
#要求centos具备vim+ifconfig+jdk8
jdk8.tar.gz
https://mirrors.yangxingzhen.com/jdk/
编写Dockerfile
mkdir myfile
ll
# 有jdk.tar.gz包
vim Dockerfile
FROM centos
MAINTAINER zzyy<zzyybs@126.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 80
CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash
构建
docker build -t centosjava8:1.5 .
#注意 有个点
docker images #查看 发现有这个centosjava8:1.5 镜像了
docker run -it 镜像id /bin/bash
pwd
/usr/local
vim 可以用
ifconfig 可以用
java -version 可以
虚悬镜像
仓库名 和 标签名都是 的镜像
mkdir /test
cd test
vim Dockerfile
FROM ubuntu
CMD echo 'action is success'
docker build .
docker images # 发现有 仓库名和标签名都是 <none>的镜像 没啥用 一定要删除
docker images ls -f dangling=true #查看虚悬镜像
docker image prune #删除虚悬镜像
Docker微服务实战
第一步 springboot项目打包 上传
端口号6001
mkdir mydocker
cd mydocker # 上传到这里
vim Dockerfile # 编写
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER zzyy
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为zzyy_docker.jar
ADD docker_boot-0.0.1-SNAPSHOT.jar zzyy_docker.jar
# 运行jar包
RUN bash -c 'touch /zzyy_docker.jar'
ENTRYPOINT ["java","-jar","/zzyy_docker.jar"]
#暴露6001端口作为微服务
EXPOSE 6001
#构建
docker build -t zzyy_docker:1.6 .
docker images
# 运行容器
docker run -d -p 6001:6001 镜像id
# 访问测试
ip:6001