定制镜像
定制镜像的两种方法
- 手动修改容器的内容,然后导出新的镜像
- 基于dockerfile构建新的镜像
dockerfile
镜像是多层存储的,每一层都是在前一层的基础上进行修改的
dockerfile的主要组成部分:基础镜像、维护者的信息、镜像的操作指令、容器启动时执行的命令
DcokerFile的指令
FROM 指定基础镜像
MAINTAIMER 指定维护者的信息
RUN 执行命令
ADD 复制文件到容器内(如果是压缩文件会自动解压)
COPY 复制文件到容器内,不会自动解压
WORKDIR 指定工作目录
VOLUME 设置挂载卷
EXPORT 指定对外的端口信息
ENV 设置环境变量,这个是全局的
ENTRYPOINT 容器启动后执行的命令
CMD 指定容器启动后执行的命令
cmd和entrypoint的区别是:如果有entrypoint存在的话,那么就会把cmd当作参数传递给entrypoint
实例: dockerfile制作jdk镜像
- 首先要下载好jdk的安装包,我这里下载的是jdk1.8版本的
- 编写Dockerfile
[root@docker docker]# vim Dockerfile
FROM frolvlad/alpine-glibc:alpine-3.14_glibc-2.33
MAINTAINER dxy
ADD ./jdk-8u301-linux-x64.tar.gz /opt/
ENV PATH=/opt/jdk1.8.0_301/bin:$PATH
CMD ["/bin/sh"]
# 查看目录下有的文件
[root@docker docker]# ls
Dockerfile jdk-8u301-linux-x64.tar.gz
- 打包成镜像
docker build -t java/jdk:8_301 .
# 参数
-t:指定镜像的名字和版本
-f:指定dockerfile文件
.:是使用当前目录创建dockerfile