文章目录
1、dockerfile简介
前面我们所使用的镜像都是别人构建好的,但是别人构建好的镜像不一定能满足我们的需求(**例如:**部署springboot项目需要java环境),使用dockerfile构建自定义镜像就可以解决这个问题。
dockerfile就是一个文本文件,在这个文本文件中可以使用docker所提供的一些指令来配置构建镜像的细节,后期可以使用这个dockerfile文件来构建自己的镜像。
dockerfile文件内容一般分为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” | 用来指定容器启动时所执行的命令 |
2、入门案例
需求:使用dockerfile来构建一个包含Jdk17的centos7镜像
分析:
1、基础的镜像的应该选择centos:7
2、把Jdk17添加到centos:7的基础镜像中
3、配置全局环境变量方便在镜像中使用java命令
实现步骤:
1、将Jdk17的压缩包上传到linux服务器中
2、在Jdk17所在的目录下创建一个dockerfile文件
3、使用docker build命令构建镜像
4、使用docker images查看镜像构建情况
5、使用自己所构建的镜像创建容器,测试Jdk17的安装情况
2.1、创建目录 /opt/dockerfilejdk17
[root@localhost ~]# mkdir -p /opt/dockerfilejdk17
[root@localhost ~]# cd /opt/dockerfilejdk17/
[root@localhost dockerfilejdk17]#
2.2、上传 jdk-17_linux-x64_bin.tar.gz 到 /opt/dockerfilejdk17
2.3、在/opt/dockerfilejdk17目录下创建dockerfile文件
[root@localhost dockerfilejdk17]# vim dockerfile
FROM centos:7
MAINTAINER atguigu
RUN mkdir -p /usr/local/java
ADD jdk-17_linux-x64_bin.tar.gz /usr/local/java/
ENV JAVA_HOME=/usr/local/java/jdk-17.0.8
ENV PATH=$PATH:$JAVA_HOME/bin
[root@localhost dockerfilejdk17]# ll
总用量 178108
-rw-r--r--. 1 root root 182 9月 25 21:29 dockerfile
-rw-r--r--. 1 root root 182376116 8月 10 2023 jdk-17_linux-x64_bin.tar.gz
2.4、执行命令构建镜像:不要忘了后面的那个 .
[root@localhost dockerfilejdk17]# docker build -t centos7-jdk17 .
[+] Building 29.9s (8/8) FINISHED docker:default
=> [internal] load .dockerignore 0.5s
=> => transferring context: 2B 0.1s
=> [internal] load build definition from dockerfile 0.5s
=> => transferring dockerfile: 274B 0.1s
=> [internal] load metadata for docker.io/library/centos:7 6.1s
=> [1/3] FROM docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 0.1s
=> => resolve docker.io/library/centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 0.0s
=> => sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 1.20kB / 1.20kB 0.0s
=> => sha256:dead07b4d8ed7e29e98de0f4504d87e8880d4347859d839686a31da35a3b532f 529B / 529B 0.0s
=> => sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9 2.75kB / 2.75kB 0.0s
=> [internal] load build context 2.9s
=> => transferring context: 182.41MB 2.9s
=> [2/3] RUN mkdir -p /usr/local/java 1.4s
=> [3/3] ADD jdk-17_linux-x64_bin.tar.gz /usr/local/java/ 17.9s
=> exporting to image 2.2s
=> => exporting layers 2.2s
=> => writing image sha256:d4c53036ce375be152ed8efbd45ddf96e36108c5d3bc04fa9248dec7ebbaf374 0.0s
=> => naming to docker.io/library/centos7-jdk17
2.5、查看镜像是否建立完成
2.6、创建容器 atguigu-centos
[root@localhost dockerfilejdk17]# docker run -it --name atguigu-centos centos7-jdk17 /bin/bash
[root@3d4f93f7b804 /]# java -version
java version "17.0.8" 2023-07-18 LTS
Java(TM) SE Runtime Environment (build 17.0.8+9-LTS-211)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9-LTS-211, mixed mode, sharing)
2.7、 查看容器 /usr/local/java 目录
[root@localhost dockerfilejdk17]# docker run -it --name atguigu-centos centos7-jdk17 /bin/bash
[root@3d4f93f7b804 /]# java -version
java version "17.0.8" 2023-07-18 LTS
Java(TM) SE Runtime Environment (build 17.0.8+9-LTS-211)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9-LTS-211, mixed mode, sharing)
[root@3d4f93f7b804 /]# cd /usr/local/java
[root@3d4f93f7b804 java]# ll
total 0
drwxr-xr-x. 9 root root 136 Sep 25 13:30 jdk-17.0.8
[root@3d4f93f7b804 java]#
标签:java,Jdk17,root,centos7,dockerfilejdk17,镜像,docker,dockerfile
From: https://blog.csdn.net/m0_65152767/article/details/142533281