四十五、Docker-搭建本地镜像仓库

1、Docker UI

1.1 简介
通常来讲,开发人员和管理人员默认通过命令行来创建及运行Docker容器,但Docker的Remote API让他们可以通过充分利用REST(代表性状态传输协议)的API,运行相同的命令。Docker UI也是基于API方式管理宿主机的Docker引擎。Docker UI Web前端程序让你可以处理通常通过Web浏览器的命令行来管理的许多任务。

安装镜像

[root@localhost ~]# docker pull uifd/ui-for-docker
[root@localhost ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
uifd/ui-for-docker   latest              965940f98fa5        3 years ago         8.1 MB
# 启动docker-UI服务,并且映射9000至容器9000
[root@localhost ~]# docker run -it -d --name docker-web -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker
663e76cba90328332d2c03afc461db0d68e47f8e792cb4362153de91d38ddd2f
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                COMMAND             CREATED             STATUS              PORTS                    NAMES
663e76cba903        uifd/ui-for-docker   "/ui-for-docker"    10 seconds ago      Up 8 seconds        0.0.0.0:9000->9000/tcp   docker-web

浏览器访问9000端口
四十五、Docker-搭建本地镜像仓库_第1张图片

2、Docker本地私有仓库

Docker仓库主要用于存放Docker镜像,Docker仓库分为公共仓库和私有仓库,基于registry可以搭建本地私有仓库,使用私有仓库的优点如下:
节省网络带宽,针对于每个镜像不用去Docker官网仓库下载;
下载Docker镜像从本地私有仓库中下载;
组件公司内部私有仓库,方便各部门使用,服务器管理更加统一;
可以基于GIT或者SVN、Jenkins更新本地Docker私有仓库镜像版本。

官方提供Docker Registry来构建本地私有仓库,目前最新版本为v2,最新版的docker已不再支持v1,Registry v2使用Go语言编写,在性能和安全性上做了很多优化,重新设计了镜像的存储格式。

准备两台机器,A机器作为仓库服务器,B机器作为客户端,君安装docker

A安装 Docker registry镜像

# 搭建本地仓库
[root@localhost ~]# docker pull docker.io/registry
[root@localhost ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
docker.io/registry   latest              708bc6af7e5e        2 months ago        25.8 MB
uifd/ui-for-docker   latest              965940f98fa5        3 years ago         8.1 MB
# 启动
[root@localhost ~]# mkdir -p  /data/registry/
[root@localhost ~]# docker run -itd -p 5000:5000 -v /data/registry:/var/lib/registry docker.io/registry
095e58aaa7f1db0540e33ea204432752fdfd7c2df129900df3f5d84760727168
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                    NAMES
095e58aaa7f1        docker.io/registry   "/entrypoint.sh /e..."   10 seconds ago      Up 8 seconds        0.0.0.0:5000->5000/tcp   vibrant_wiles
663e76cba903        uifd/ui-for-docker   "/ui-for-docker"         22 minutes ago      Up 22 minutes       0.0.0.0:9000->9000/tcp   docker-web

B 配置并上传镜像到仓库


# 客户端机器上传镜像到仓库
[root@localhost ~]# docker pull busybox
[root@localhost ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
busybox              latest              83aa35aa1c79        2 weeks ago         1.22 MB
uifd/ui-for-docker   latest              965940f98fa5        3 years ago         8.1 MB
[root@localhost ~]# docker tag busybox 10.0.0.149:5000/busybox
[root@localhost ~]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
10.0.0.149:5000/busybox   latest              83aa35aa1c79        2 weeks ago         1.22 MB
busybox                   latest              83aa35aa1c79        2 weeks ago         1.22 MB
uifd/ui-for-docker        latest              965940f98fa5        3 years ago         8.1 MB
# 配置本地仓库地址
[root@localhost ~]# vim /etc/docker/daemon.json

{
"insecure-registries":["10.0.0.149:5000"]
}
# 重启服务,上传成功
[root@localhost ~]# systemctl restart docker
[root@localhost ~]# docker push 10.0.0.149:5000/busybox
The push refers to a repository [10.0.0.149:5000/busybox]
a6d503001157: Pushed 
latest: digest: sha256:afe605d272837ce1732f390966166c2afff5391208ddd57de10942748694049d size: 527

B 从本地仓库下载镜像

# 删除客户端容器和镜像
[root@localhost ~]# docker ps -aq|xargs docker rm -f
[root@localhost ~]# docker images -aq|xargs docker rmi -f
# 下载
[root@localhost ~]# docker pull 10.0.0.149:5000/busybox
Using default tag: latest
Trying to pull repository 10.0.0.149:5000/busybox ... 
latest: Pulling from 10.0.0.149:5000/busybox
0669b0daf1fb: Pull complete 
Digest: sha256:afe605d272837ce1732f390966166c2afff5391208ddd57de10942748694049d
Status: Downloaded newer image for 10.0.0.149:5000/busybox:latest
[root@localhost ~]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
10.0.0.149:5000/busybox   latest              83aa35aa1c79        2 weeks ago         1.22 MB

# 查看本地仓库镜像
[root@localhost ~]# curl -XGET http://10.0.0.149:5000/v2/_catalog
{"repositories":["busybox"]}
[root@localhost ~]# curl -XGET http://10.0.0.149:5000/v2/busybox/tags/list
{"name":"busybox","tags":["latest"]}

补充:指定默认容器的大小
vim /etc/sysconfig/docker-storage,OPTIONS参数后面添加如下代码,指定Docker容器rootfs容量大小为40G:
DOCKER_STORAGE_OPTIONS="–storage-opt overlay2.size=40G"
以上方法只适用于新容器生成,并且修改后需要重启docker,无法做到动态给正在运行容器指定大小。

你可能感兴趣的:(Linux,运维-CentOS,7.x)