Dockerfile
Dockerfile是用于构建Docker镜像的脚本文件。
常用命令
命令 | 作用 |
---|---|
FROM image_name:tag | 定义了使用哪个基础镜像启动构建流程 |
MAINTAINER user_name | 声明镜像的创建者 |
ENV key value | 设置环境变量 (可以写多条) |
RUN command | 是Dockerfile的核心部分(可以写多条) |
ADD source_dir/file dest_dir/file | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 |
COPY source_dir/file dest_dir/file | 和ADD相似,但是如果有压缩文件并不能解压 |
WORKDIR path_dir | 设置工作目录 |
EXPOSE port1 prot2 | 用来指定端口,使容器内的应用可以通过端口和外界交互 |
CMD argument | 在构建容器时使用,会被docker run 后的argument覆盖 |
ENTRYPOINT argument | 和CMD相似,但是并不会被docker run指定的参数覆盖 |
VOLUME | 将本地文件夹或者其他容器的文件挂载到容器中 |
构建JDK镜像
编写 Dockerfile 构建 JDK 镜像
上传
JDK
到宿主机创建Dockerfile
1
vim Dockerfile
文件内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14FROM centos:7
MAINTAINER imxushuai
切换工作目录
WORKDIR /usr
执行命令
RUN mkdir -p /usr/local/java
从宿主机复制文件到镜像
ADD jdk-8u201-linux-x64.tar.gz /usr/local/java
配置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_201
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构建镜像
1
docker build -t='jdk1.8' .
查看镜像是否成功生成
1
docker images
创建容器
1
docker run -rm -it --name=myjdk jdk1.8 /bin/bash
查看Java版本
1
java -version
JDK构建成功
上传镜像到云
将自己生成的镜像上传到云,云端可以是自己的私有仓库,也可以是类似Docker hub
的共有仓库。
上传到Docker Hub
创建Docker hub账号(省略)
emmmmm,正常创建即可,实在不会就百度/谷歌一下。
上传镜像
Docker hub创建仓库
宿主机登录到Docker Hub
1
docker login
输入账号密码即可完成登录!
上传镜像到
Docker hub
1
2
3
4
5
6
7将生成的镜像打上tag,需要在镜像名称加上Docker hub用户名
tag名称还需要和Docker hub一致
如我上面创建的仓库为:imxushuai/jdk1.8
所以下面我的tag为:imxushuai/jdk1.8
docker tag jdk1.8 imxushuai/jdk1.8
上传
docker push imxushuai/jdk1.8由于Docker hub在国外,所以上传可能会花费一些时间,请耐心等待!!!(如果有科学上网的办法,那就真是太棒了)
Docker hub查看是否上传成功
这样就可以在其他能联网的电脑下载到上传到Docker hub的镜像。
拉取镜像:
docker pull imxushuai/jdk1.8
上传到私有仓库
将镜像上传到由自己搭建的私有仓库
搭建私有仓库
拉取私有仓库镜像
1
docker pull registry
运行私有仓库容器
1
docker run -di --name=imxushuai_registry -p 5000:5000 registry
修改宿主机
daemon.json
1
vim /etc/docker/daemon.json
文件内容如下:
1
{"insecure-registries":["192.168.136.104:5000"]}
重启宿主机
docker
1
systemctl restart docker
注意:重启
docker
后,需要手动重启容器哦!
上传镜像
给需要上传到私有仓库的镜像打上tag
1
2
3
4
5将生成的镜像打上tag,需要在镜像名称加上Docker hub用户名
tag名称还需要和Docker hub一致
如我上面创建的仓库为:imxushuai/jdk1.8
所以下面我的tag为:imxushuai/jdk1.8
docker tag jdk1.8 192.168.136.104:5000/jdk1.8上传镜像
1
docker push 192.168.136.104:5000/jdk1.8
查看是否上传成功
OK!!!