dockerfile 入门
- 前提已经知道常用的docker和linux命令
如容器的创建,运行, linux的文件命令,会上传文件到linux等等
dockerfile简介
之前我们所使用的镜像都是别人构建好的,但是别人构建好的镜像不一定能满足我们的需求。为了满足我们自己的某一些需求,此时我们就需要构建自己的镜像,怎么构建?使用dockerfile。
dockerfile就是一个文本文件,在这个文本文件中可以使用docker所提供的一些指令来指定我们构建镜像的细节,后面就可以使用这个dockerfile文件来构建自己的镜像。
dockerfile文件内容一般分为4部分:
1、基础镜像信息(必选)
2、维护者信息(可选)
3、镜像操作指令(可选)
4、容器启动时执行的指令(可选)
常用命令
指令 | 用法 | 作用 |
---|---|---|
FROM | FROM image_name:tag | 指定一个构建镜像的基础源镜像,如果本地没有就会从公共库中拉取,没有指定镜像的标签会使用默认的latest标签,可以出现多次,如果需要在一个dockerfile中构建多个镜像。 |
MAINTAINER | MAINTAINER user_name | 描述镜像的创建者,名称和邮箱 |
RUN | RUN “command” “param1” “param2” | 用来执行一些命令,可以写多条 |
ENV | ENV key value | 设置容器的环境变量,可以写多条。 |
ADD | ADD source_dir/file | 将宿主机的文件复制到容器内,如果是压缩文件,则复制后自动解压 |
ENTRYPOINT | ENTRYPOINT “command” “param1” “param2” | 用来指定容器启动时所执行的命令 |
入门案例
需求:使用dockerfile来构建一个包含Jdk17的centos7镜像
分析:
1、基础的镜像的应该选择centos:7 (FROM centos:7)
2、在自己所构建的镜像中需要包含Jdk17,就需要把Jdk17添加到centos:7的基础镜像中
3、为了方便的去使用自己构建的镜像中的Jdk17,就需要去配置环境变量
4、因为Jdk17仅仅是一个开发工具,并不是一个服务进程,因此在启动容器的时候可以不指定任何的执行命令
实现步骤:
1、 准备环境
先下载好linux版本的jdk🔗官网
将Jdk17的安装包上传到linux服务器
我们是依赖 centos7镜像创建, 要先拉取centos7的镜像
docker pull centos:7
2、在Jdk17压缩包所在目录下创建一个dockerfile文件
内容为
FROM centos:7
RUN mkdir -p /usr/local/java
ADD jdk-17.0.12_linux-x64_bin.tar.gz /usr/local/java/
ENV JAVA_HOME=/usr/local/java/jdk-17.0.12
ENV PATH=$PATH:$JAVA_HOME/bin
3、使用docker build命令构建镜像
docker build -t <镜像名>:<标签> .
如果你不写标签(如 :1.0),默认就是 :latest。
4、使用docker images查看镜像构建情况
5、使用自己所构建的镜像创建容器,测试Jdk17的安装情况
直接交互式运行(-it)就可以, 进入用java命令看看生效不
docker run -it --name test01 mycentos-jdk17 /bin/bashjava -version