Docker容器化学习笔记(四)Dockerfile命令与构建镜像、私库搭建与镜像上传
1. Dockerfile
1.1 什么是Dockerfile
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。
- 对于开发人员:可以为开发团队提供一个完全一致的环境。
- 对于测试人员:可以直接拿开发所构建的镜像或Dockerfile文件构建镜像。
- 对于运维人员:可以在部署的时,实现应用的无缝移植。
1.2 常用命令
| 命令 | 含义/作用 |
|---|---|
| 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 | 设置工作目录 |
1.3 使用脚本创建镜像
[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 610MB
2. 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命令进行下载
本文来自博客园,作者:Huathy,遵循 CC 4.0 BY-NC-SA 版权协议。转载请注明原文链接:https://www.cnblogs.com/huathy/p/17253824.html

浙公网安备 33010602011771号