- 1. Dockerfile
- 1.1 什么是Dockerfile
- 1.2 常用命令
- 1.3 使用脚本创建镜像
- 2. Docker私有仓库
- 2.1 私库搭建与配置
- 2.2 镜像上传到私库
- 2.3 私库下载
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。
- 对于开发人员:可以为开发团队提供一个完全一致的环境。
- 对于测试人员:可以直接拿开发所构建的镜像或Dockerfile文件构建镜像。
- 对于运维人员:可以在部署的时,实现应用的无缝移植。
| 命令 | 含义/作用 |
|---|---|
| FROM image_name:tag | 定义了使用哪一个基础镜像启动构建流程 |
| MAINTAINER user_name | 声明镜像的创建者 |
| ENV key value | 设置环境变量(可以写多条) |
| RUN command | 是Dockerfile的核心部分(可以写多条) |
| ADD source_dir/filedest_dir/file | 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压 |
| COPY source_dir/filedest_dir/file | 和ADD命令相似,区别是如果有压缩文件,并不能自动解压 |
| WORKDIR path_dir | 设置工作目录 |
[root@localhost ~]# mkdir -p /usr/local/dockerjdk8 [root@localhost ~]# ls anaconda-ks2.cfg anaconda-ks.cfg jdk8.tar mynginx.tar [root@localhost ~]# vi Dockerfile
编写Dockerfile文件
FROM centos:7 MAINTAINER huathy WORKDIR /usr RUN mkdir /usr/local/java ADD jdk-8u251-linux-x64.tar.gz /usr/local/java/ ENV JAVA_HOME /usr/local/java/jdk1.8.0_251 ENV JRE_HOME $JAVA_HOME/jre ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH ENV PATH $JAVA_HOME/bin:/$PATH
开始构建:docker build -t='jdk1.8' .(-t指定镜像名称;.指定Dcokerfile文件夹,.表示当前目录)
[root@localhost dockerjdk8]# docker build -t='jdk1.8' . Sending build context to Docker daemon 195.1MB Step 1/9 : FROM centos:7 ---> eeb6ee3f44bd Step 2/9 : MAINTAINER huathy ---> Running in 141a15b2980f Removing intermediate container 141a15b2980f ---> b216aeeb2a43 Step 3/9 : WORKDIR /usr ---> Running in bf825b9909ea Removing intermediate container bf825b9909ea ---> a5382397cc46 Step 4/9 : RUN mkdir /usr/local/java ---> Running in 02f8d65a8658 Removing intermediate container 02f8d65a8658 ---> 623be34823e8 Step 5/9 : ADD jdk-8u251-linux-x64.tar.gz /usr/local/java/ ---> 237ca0d36d3b Step 6/9 : ENV JAVA_HOME /usr/local/java/jdk1.8.0_251 ---> Running in 98d9d0465445 Removing intermediate container 98d9d0465445 ---> 85c6eaf5bf2e Step 7/9 : ENV JRE_HOME $JAVA_HOME/jre ---> Running in 2da4e767cbe4 Removing intermediate container 2da4e767cbe4 ---> ddd1fca19fc5 Step 8/9 : ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH ---> Running in eb5ef3e16518 Removing intermediate container eb5ef3e16518 ---> 46e29bbb2684 Step 9/9 : ENV PATH $JAVA_HOME/bin:/$PATH ---> Running in 8f0a720c5f19 Removing intermediate container 8f0a720c5f19 ---> 79f8c221d4f6 Successfully built 79f8c221d4f6 Successfully tagged jdk1.8:latest
查看:
[root@localhost dockerjdk8]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jdk1.8 latest 79f8c221d4f6 2 minutes ago 610MB2. Docker私有仓库
企业内部用于存放docker镜像的仓库。作用:局域网内共享镜像。
2.1 私库搭建与配置- 拉取私有仓库镜像:
docker pull registry
- 启动私有仓库容器:
docker run -di --name registry -p 5000:5000 registry
- 打开浏览器输入地址 http://192.168.2.11:5000/v2/_catalog 看到 {"repositories":[]} 表示私有仓库搭建成功,并且镜像为空。
- 让docker信任私库地址:修改 deamon.json 文件
vi /etc/docker/deamon.json
# 添加以下内容
{"insecure-registries":["192.168.2.11:5000"]}
2.2 镜像上传到私库
- 标记此镜像为私有仓库镜像
docker tag jdk1.8 192.168.2.11:5000/jdk1.8
- 上传标记的镜像
docker push 192.168.2.11:5000/jdk1.8
示例:
[root@localhost docker]# docker tag jdk1.8 192.168.2.11:5000/jdk1.8 [root@localhost docker]# docker push 192.168.2.11:5000/jdk1.8 Using default tag: latest The push refers to repository [192.168.2.11:5000/jdk1.8] 5739a69f0bb7: Pushed f967d613a659: Pushed 174f56854903: Pushed latest: digest: sha256:e493b69f4711999c55059648c0407705f75884e3ae68c57bff98d52a37512eb0 size: 949
再次查看:http://192.168.2.11:5000/v2/_catalog,可见:{"repositories":["jdk1.8"]}
2.3 私库下载私库下载与私库上传类似,同样需要在daemon.json文件中信任私库地址。然后使用docker pull ip:port/image_name
- 让docker信任私库地址:修改 deamon.json 文件
vi /etc/docker/deamon.json
# 添加以下内容
{"insecure-registries":["192.168.2.11:5000"]}
- 使用 docker pull ip:port/image_name 命令进行下载



