https://cr.console.aliyun.com/cn-shanghai/instances/repositories
1.点击创建镜像仓库
2.创建添加信息
3.选择本地仓库创建
Harbor是一个开源的企业级Docker Registry,它提供了安全的镜像管理、访问控制、漏洞扫描等功能,可以轻松地搭建自己的Docker私有仓库。
安装之前确保前置条件是否满足,需要安装docker、docker-compose、openssl以及python2.7以上
yum -y install openssl
sh prepare
sh install.sh
docker-compose up -d
默认docker只允许访问 https仓库如果要访问http仓库需要自己配置
配置允许访问http仓库:/etc/docker/daemon.json
{
"insecure-registries":["http://192.168.0.151"]
}
重启docker服务:systemctl restart docker.service
harbor网页上创建项目名
登录:docker login --username=admin 192.168.0.11
改名:docker tag mysql:5.7 192.168.0.11/项目名/mysql:5.7
推送:docker push 192.168.0.11/项目名/mysql:5.7
下载:docker pull 192.168.0.11/项目名/mysql:5.7
注意:docker login 后有一个登录凭证(可删除,下次需要密码):
/root/.docker/config.json (建议从安全角度出发,每次登录后进行删除)
命令详解
docker push:用于将本地构建的 Docker 镜像推送到 Docker Hub 或其他 Docker 镜像仓库中,以供其他用户和机器访问和使用。
docker push [OPTIONS] NAME[:TAG]
其中 NAME[:TAG] 表示要推送的镜像名称和版本号。比如,推送 nginx 官方镜像到 Docker Hub 的 myaccount 仓库中,可以使用如下命令:
docker push myaccount/nginx
docker tag:用于为本地镜像添加标签,以便将其上传到远程镜像仓库中。
docker tag <IMAGE_ID> <REPOSITORY_NAME>:<TAG>
其中,
例如,我们可以使用以下命令为本地镜像添加标签:
docker tag myimage:latest myregistry.com/myimage:1.0
这将为本地镜像 myimage:latest 添加一个名为 myregistry.com/myimage:1.0 的标签,将其上传到名为 myregistry.com 的远程镜像仓库中。
需要注意的是,使用 docker tag 命令只是为本地镜像添加了一个新的标签,原本的镜像 ID 和名称并没有改变。
docker pull
用于从 Docker Registry 中拉取镜像到本地。Docker Registry 是 Docker 镜像的集中存储和分发点,Docker Hub 是 Docker 官方提供的一个公共 Registry,包含了数量庞大的官方和社区提供的镜像。除了 Docker Hub,还可以使用其他的 Registry,比如阿里云的 Registry、Harbor 等等。
使用 docker pull 命令拉取镜像的语法格式如下:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
其中,OPTIONS 表示可选的参数,NAME 表示镜像的名称,TAG 表示镜像的标签,DIGEST 表示镜像的哈希值。
例如,要从 Docker Hub 拉取官方的 nginx 镜像:
docker pull nginx:1.19.10
如果需要从其他的 Registry 拉取镜像,可以在镜像名称前面加上 Registry 的地址,例如:
docker pull registry.cn-hangzhou.aliyuncs.com/xxx/nginx:1.19.10
在 Docker 中,本地镜像的载入和载出可以使用 docker save 和 docker load 命令来实现。这两个命令可以将 Docker 镜像导出到一个 tar 文件,或者从一个 tar 文件中导入到本地 Docker 环境中。
具体来说,docker save 命令用于将本地的 Docker 镜像打包成一个 tar 文件,命令格式为:
docker save IMAGE1 [IMAGE2 ...] -o FILENAME.tar
其中,IMAGE1、IMAGE2 等是要导出的 Docker 镜像名称或 ID,FILENAME.tar 是导出的 tar 文件名。例如:
docker save nginx -o nginx.tar
上述命令将导出本地的 nginx 镜像,并保存到 nginx.tar 文件中。
接着,可以使用 docker load 命令将导出的 tar 文件加载到本地 Docker 环境中,命令格式为:
docker load -i FILENAME.tar
其中,FILENAME.tar 是要导入的 tar 文件名。例如:
docker load -i nginx.tar
上述命令将加载之前导出的 nginx.tar 文件,并将其中的 Docker 镜像导入到本地 Docker 环境中。
类似地,如果要导出本地的 Docker 容器,可以使用 docker export 命令将容器导出到一个 tar 文件,命令格式为:
docker export CONTAINER_ID -o FILENAME.tar
其中,CONTAINER_ID 是要导出的 Docker 容器的 ID,FILENAME.tar 是导出的 tar 文件名。例如:
docker export abc123 -o container.tar
上述命令将导出容器 ID 为 abc123 的 Docker 容器,并保存到 container.tar 文件中。注意,导出的容器将不包含该容器的 Docker 镜像,只包含容器内部的文件系统内容。
最后,可以使用 docker import 命令将导出的 tar 文件导入到本地 Docker 环境中,命令格式为:
docker import FILENAME.tar REPOSITORY:TAG
其中,FILENAME.tar 是要导入的 tar 文件名,REPOSITORY:TAG 是导入后的 Docker 镜像名称和标签。例如:
docker import container.tar myrepo/myimage:v1.0
上述命令将加载之前导出的 container.tar 文件,并将其中的容器文件系统导入到名为 myrepo/myimage,标签为 v1.0 的 Docker 镜像中。