Docker技术实践 - 03
- Dockerfile及镜像制作实践
- 1. 镜像制作分析
- 2.制作JDK镜像
- 2.1 准备工作
- 2.2 创建Dockerfile文件
- 2.3 创建JDK镜像文件
- 2.4 运行JDK镜像(image)文件
- 3. 基于JDK镜像启动sentinel
- 3.1 将sentinel拷贝宿主机指定目录
- 3.2 启动镜像容器,通过java执行运行web服务
- 3.3 打开浏览器,访问sentinel服务.
- 制作Sentinel镜像(练习)
- Docker 镜像安装实践
Dockerfile及镜像制作实践
1. 镜像制作分析
- Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。我们通常会基于此文件创建docker镜像,例如:
2.制作JDK镜像
2.1 准备工作
- centos:7镜像 (所有的镜像文件创建时都需要有一个空的centos镜像,就类似通过一个空的光盘或u盘创建一个系统启动盘是一样的)
- jdk压缩包 jdk-8u301-linux-x64.tar.gz,基于此压缩包,制作jdk镜像。
- jdk拷贝的目录:/root/setup/jdk/
2.2 创建Dockerfile文件
2.3 创建JDK镜像文件
- 在Dockerfile所在目录执行docker build指令。例如:
docker build -t jdk:8 . #不要丢掉这里的点,-t表示镜像标识(镜像名),是tag单词的缩写.
- 注意末尾的点,表示构建过程中从当前目录寻找文件,jdk:8为我们创建的镜像名。
- 查看制作的镜像文件
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jdk 8 d027f0d64693 35 hours ago 565MB
2.4 运行JDK镜像(image)文件
- 在宿主机中执行如下指令,启动JDK容器,例如:
docker run -it jdk:8 bash
- 进入容器以后,可以通过echo $PATH查看环境变量(注意单词大小写),并可以通过java –version查看JDK版本信息。
[root@localhost ~]# docker run -it jdk:8 bash
[root@c86963f946b9 /]# echo $PATH
/usr/local/docker/jdk1.8.0_301/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[root@c86963f946b9 /]#
3. 基于JDK镜像启动sentinel
- JDK镜像创建以后,如何通过此镜像运行一个web服务呢,例如sentinel等。
3.1 将sentinel拷贝宿主机指定目录
- 例如/root/servers目录(servers目录不存在可以自己创建)。
3.2 启动镜像容器,通过java执行运行web服务
- 基于jdk:8镜像启动运行sentinel服务(服务启动后可在宿主机通过localhost:8180进行访问)
docker run -d -p 8180:8080 --name sentinel
-v /root/servers:/usr/sca
jdk:8 java -jar /usr/sca/sentinel-dashboard-1.8.0.jar
- 其中:
- -d 表示后台运行
- -p 用于实现端口映射(假设外部要访问这个容器,必须要做端口映射)
- –name 表示为启动的容器起一个名字
- 这里,服务启动后可通过docker ps指令查看启动的服务,假如看不到服务,可能服务启动失败,可通过如下指令查看具体日志
docker container logs c86 #这里c86为容器id,也可以为你的容器名
- 我们访问sentinel服务时需要通过宿主机进行访问,不可以直接访问,所以要做端口映射,例如
3.3 打开浏览器,访问sentinel服务.
- 在windows中打开浏览器,输入你的ip地址(这个ip为远端宿主机的ip地址),端口号为宿主机的端口号.例如
制作Sentinel镜像(练习)
Docker 镜像安装实践