Docker容器化学习笔记(四)Dockerfile命令与构建镜像、私库搭建与镜像上传

1. Dockerfile

1.1 什么是Dockerfile

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。

  1. 对于开发人员:可以为开发团队提供一个完全一致的环境。
  2. 对于测试人员:可以直接拿开发所构建的镜像或Dockerfile文件构建镜像。
  3. 对于运维人员:可以在部署的时,实现应用的无缝移植。

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 私库搭建与配置

  1. 拉取私有仓库镜像:
docker pull registry
  1. 启动私有仓库容器:
docker run -di --name registry -p 5000:5000 registry
  1. 打开浏览器输入地址 http://192.168.2.11:5000/v2/_catalog 看到 {"repositories":[]} 表示私有仓库搭建成功,并且镜像为空。
  2. 让docker信任私库地址:修改 deamon.json 文件
vi /etc/docker/deamon.json
# 添加以下内容
{"insecure-registries":["192.168.2.11:5000"]}

2.2 镜像上传到私库

  1. 标记此镜像为私有仓库镜像
docker tag  jdk1.8 192.168.2.11:5000/jdk1.8
  1. 上传标记的镜像
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

  1. 让docker信任私库地址:修改 deamon.json 文件
vi /etc/docker/deamon.json
# 添加以下内容
{"insecure-registries":["192.168.2.11:5000"]}
  1. 使用 docker pull ip:port/image_name 命令进行下载
posted @ 2021-10-31 23:09  Huathy  阅读(39)  评论(0)    收藏  举报  来源