- 下载镜像 Docker Registry
$ docker pull registry
$ docker images registry
REPOSITORY TAG IMAGE ID CREATED SIZE
registry latest b8604a3fe854 8 months ago 26.2MB
- 运行私有库 Registry,相当于本地有个私有Docker Hub
$ mkdir -pv /app/registry
$ docker run -d -p 5000:5000 \
-v /app/registry:/tmp/registry \
--privileged=true \
--name myregistry \
--restart=always registry
$ docker ps -l
# 默认情况下,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调
- 案例演示创建一个新镜像,ubuntu安装ifconfig命令
# 从Hub上下载ubuntu镜像到本地并成功运行
$ docker pull ubuntu
$ docker run -it -d --name u1 ubuntu /bin/bash
# 原始的ubuntu镜像是不带着ifconfig命令
$ docker exec -it u1 /bin/bash
root@061f7b3bc044:/# apt update -y
root@061f7b3bc044:/# apt install -y net-tools
# 外网联通的情况下,安装ifconfig命令并测试通过
root@061f7b3bc044:/# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:03 txqueuelen 0 (Ethernet)
RX packets 10486 bytes 21412251 (21.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10507 bytes 988690 (988.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@061f7b3bc044:/# exit
# 安装完成后,commit的新镜像
# 公式:docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
# 命令:在容器外执行
$ docker commit -m "Add ifconfig tools" -a "zhongzhiwei <935523993@qq.com>" u1 zzwubuntu:v1.0
# 启动我们的新镜像并和原来的对比
$ docker history zzwubuntu:v1.0
$ docker history ubuntu:latest
- curl验证私服库上有什么镜像
# 模拟发送一个Get请求
$ curl -XGET http://139.198.105.99:5000/v2/_catalog
{"repositories":[]}
# 可以看到,目前私服库没有任何镜像上传过......
- 将新镜像修改符合私服规范的Tag
# 按照公式:docker tag 镜像:tag Host:Port/Registory:Tag
使用命令docker tag将新制作的镜像修改为139.198.105.99:5000/zzwubuntu:v1.0
$ docker tag zzwubuntu:v1.0 139.198.105.99:5000/zzwubuntu:v1.0
- 修改配置文件使之支持http
# 修改配置文件使之支持http
$ vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://po13h3y1.mirror.aliyuncs.com","https://registry.docker-cn.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
#"comment" : "添加以下内容",
"insecure-registries": ["139.198.105.99:5000"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
# registry-mirrors 配置的是国内阿里云提供的镜像加速地址,不用加速的化访问官网会很慢。
### 2个配置中间有个逗号',',这个配置是 json 格式的。
# 上述理由:由于Docker默认不允许 http 方式推送镜像,通过配置选项来取消这个限制
# ---> 修改完后如果不生效,建议重启 Docker
$ systemctl daemon-reload ; systemctl restart docker
- push推送到私服库
$ docker push 139.198.105.99:5000/zzwubuntu:v1.0
- curl验证私服库上有什么镜像
$ curl -XGET http://139.198.105.99:5000/v2/_catalog
{"repositories":["zzwubuntu"]}
范例:
~ curl -XGET http://10.0.0.101:5000/v2/_catalog
{"repositories":["kubesphere-ubuntu"]}
~ curl -XGET http://10.0.0.101:5000/v2/kubesphere-ubuntu/tags/list
{"name":"kubesphere-ubuntu","tags":["1.1"]}
- pull到本地并运行
$ docker pull 139.198.105.99:5000/zzwubuntu:v1.0