docker搭建本地仓库并制作自己的镜像

[TOC]

1. 搭建本地仓库

1.1 下载仓库镜像

1
docker pull registry

1.2 启动仓库容器

1
docker run -d -p 5000:5000 -v /home/registry/:/tmp/registry registry

第一个5000是本地的端口,第二个5000是docker里面的端口,将本地5000的端口映射到
docker里面的5000端口

2. 在CentOS容器中安装JDK

2.1 下载CentOS容器

镜像仓库地址:https://dashboard.daocloud.io/packages/explore

1
docker pull daocloud.io/library/centos:latest

2.2 运行Linux容器:

1
docker run -d -it --name myCentos 镜像ID /bin/bash
  • *-d 后台运行 *
  • –name 容器名

2.3 将JDK复制到myCentos容器中

1
docker cp jdk-10.0.1_linux-x64_bin.tar.gz myCentos:/usr/local

2.4 进入容器

1
docker exec -it myCentos /bin/bash

2.5 解压JDK

1
tar -zxvf jdk-10.0.1_linux-x64_bin.tar.gz

2.6 配置环境变量

1
vi /etc/profile

在文件末尾添加:
export JAVA_HOME=/usr/local/jdk1.8.0_152
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

2.6.1 刷新环境变量

1
source /etc/profile

2.6.2 设置开机自动执行source

1
vi ~/.bashrc

在第一行添加 source /etc/profile

2.6.3 重启容器

1
2
docker stop myCentos
docker start myCentos

2.7 将容器提交到镜像里

1
docker commit <CONTAINERID> <IMAGE>

将容器提交到镜像中

3. 将新制作的镜像推送到仓库中

3.1 修改tag

1
docker tag <REPOSITORY>  仓库IP地址:端口/镜像名

tag名应该为 ip:端口/镜像名 的形式,它会将此镜像推送到此IP地址下的仓库,并且定义此镜像名

3.2 将镜像推送到仓库中

1
docker push tag名

可通过http://139.199.64.253:5000/v2/_catalog地址访问你上传的结果

注意:如果push报错:The push refers to a repository [139.199.64.253:5000/java]
Get https://139.199.64.253:5000/v1/_ping: http: server gave HTTP response to HTTPS client
则修改 /etc/docker 路径下的 daemon.json 文件,如果没有则手动创建,在文件中写入:
{ “insecure-registries”:[“139.199.64.253:5000”] }
然后重启docker: service docker restart
重新启动仓库:docker run -d -p 5000:5000 -v /home/registry/:/tmp/registry registry

如果想推送到docker的中央仓库则 tag名改为 : docker.io/java 然后再推送即可

-------------本文结束感谢您的阅读-------------