我知道如何运行注册表镜像
docker run -p 5000:5000 \
-e STANDALONE=false \
-e MIRROR_SOURCE=https://registry-1.docker.io \
-e MIRROR_SOURCE_INDEX=https://index.docker.io \
registry
Run Code Online (Sandbox Code Playgroud)
以及如何使用它
docker --registry-mirror=http://10.0.0.2:5000 -d
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能使用多个注册表镜像.
这就是我需要的:
所以我必须制作两个注册表镜像和一个私有注册表.我想docker run registry镜像第一和第二个注册表,还有一个docker run registry持有我的私人注册表.客户端将使用其中三个注册表.
我不知道如何做到这一点,我认为这是一个常见的用例,请帮助,谢谢.
我的 Tomcat 容器需要必须受到良好保护的数据,即用于数据库访问的密码以及用于单点登录到其他系统的证书和密钥。
我已经看到一些使用-e或-env-file将秘密数据传递给容器的建议,但这可以通过 docker inspect 发现(-env-file也在docker inspect 中显示文件的所有属性)。
另一种方法是将带有机密的数据容器链接到服务容器,但我不喜欢在我的注册表中包含此数据容器的概念(可供更广泛的人访问)。我知道我可以设置一个私有注册表,但是我需要不同的注册表来进行测试和生产,而且每个可以访问生产注册表的人仍然可以访问秘密数据。
我正在考虑使用包含机密数据的目录设置我的服务器并将机密数据安装到我的容器中。这对于具有不同秘密的测试和生产服务器非常有用。但它创建了容器对我的特定服务器的依赖。
所以我的问题是:您如何处理秘密数据,该问题的最佳解决方案是什么?
我想通过它的HTTP接口列出一个Docker镜像官方Docker hub的标签,但我有点困惑。似乎有两个版本:
我设法通过向此端点发送 GET 请求https://index.docker.io/v1/repositories/{my-namespace}/{my-repository}/tags以及基本身份验证凭据来获取它们。
我不确定其中是否有一个正确的,但我应该使用哪个?
我正在为生产 PHP-FPM/Nginx 应用程序运行 docker,我想使用 docker-stack.yml 并部署到 swarm 集群。这是我的文件:
version: "3"
services:
app:
image: <MYREGISTRY>/app
volumes:
- app-data:/var/www/app
deploy:
mode: global
php:
image: <MYREGISTRY>/php
volumes:
- app-data:/var/www/app
deploy:
replicas: 2
nginx:
image: <MYREGISTRY>/nginx
depends_on:
- php
volumes:
- app-data:/var/www/app
deploy:
replicas: 2
ports:
- "80:80"
volumes:
app-data:
Run Code Online (Sandbox Code Playgroud)
我的代码位于app带有来自我的注册表的图像的容器中。
我想更新我的代码,docker service update --image <MYREGISTRY>/app:latest但它不起作用代码没有改变。我猜它使用本地卷app-data代替。
新容器数据不覆盖卷数据是否正常?
我正在将映像推送到私有注册表,我想查看有关与该注册表交互的详细信息。我试过 docker -D、--debug,但没有显示任何细节。
/ # docker -D push registry.company.com:8443/hello-world:test
The push refers to a repository [registry.company.com:8443/hello-world]
45761469c965: Layer already exists
test: digest: sha256:9fa82f24cbb11b6b80d5c88e0e10c3306707d97ff862a3018f22f9b49cef303a size: 524
Run Code Online (Sandbox Code Playgroud)
如何显示有关与我的私有注册表交互的 docker 客户端的详细信息?
我在 CentOS 7 上安装了最新的 Docker 版本 18.06.0。我的服务器位于公司网络中,因此使用代理服务器访问注册表。我已根据 docker 文档添加了代理设置。但最终在部分工作中添加代理设置。即现在 docker 在运行之前使用代理来拉取图像。
但现在它无法给出以下错误:
$ sudo docker run hello-world
Unable to find image ‘hello-world:latest’ locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: proxyconnect tcp: net/http: TLS handshake timeout.
Run Code Online (Sandbox Code Playgroud)
此外,登录失败:
$ sudo docker login --username=XXXX
Password:
Error response from daemon: Get https://registry-1.docker.io/v2/: proxyconnect tcp: EOF
Run Code Online (Sandbox Code Playgroud)
我的代理速度很快。当我使用 wget 或 curl 从互联网下载任何东西时,我看到 90 到 100Mbps 的速度。我机器上的其他应用程序实用程序(例如 yum)正在完美地使用此代理,并且运行良好。现在不知道为什么只有Docker下载镜像有问题。
安装和配置的详细信息如下:
版本:
$ sudo docker version
Client:
Version: 18.06.0-ce
API version: 1.38
Go version: go1.10.3
Git commit: 0ffa825 …Run Code Online (Sandbox Code Playgroud) 需要从私有 Docker 注册表中恢复一些已删除的图像,有什么建议吗?层应该还在,垃圾收集还没有运行,有没有办法逆转删除过程?
我在 Ubuntu 上作为主机操作系统。
docker --version
Run Code Online (Sandbox Code Playgroud)
Docker 版本 18.09.6,构建 481bc77
microk8s 1.14/beta
Run Code Online (Sandbox Code Playgroud)
启用本地注册表microk2s:
microk8s.enable registry
Run Code Online (Sandbox Code Playgroud)
检查:
watch microk8s.kubectl get all --all-namespaces
Run Code Online (Sandbox Code Playgroud)
容器注册表 pod/registry-577986746b-v8xqc 1/1 运行 0 36m
然后:
编辑:
sudo vim /etc/docker/daemon.json
Run Code Online (Sandbox Code Playgroud)
添加此内容:
{
"insecure-registries" : ["127.0.0.1:32000"]
}
Run Code Online (Sandbox Code Playgroud)
重新开始:
sudo systemctl restart docker
Run Code Online (Sandbox Code Playgroud)
仔细检查,看看是否应用了不安全:
docker info | grep -A 2 Insecure
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)Insecure Registries: 127.0.0.1:32000 127.0.0.0/8 WARNING: No swap limit support
标签:
docker tag my-registry/my-services/my-service:0.0.1-SNAPSHOT 127.0.0.1:32000/my-service
Run Code Online (Sandbox Code Playgroud)
检查:
docker images
Run Code Online (Sandbox Code Playgroud)
127.0.0.1:32000/my-service 最新 e68f8a7e4675 19 小时前 540MB …
我正在尝试Kubernetes与Docker. 我的图像与 Docker 一起运行。我有一个主节点和两个工作节点。我还创建了一个像这样的本地注册表$ docker run -d -p 5000:5000 --restart=always --name registry registry:2并将我的图像推送到其中。到目前为止一切正常。
我添加{ "insecure-registries":["xxx.xxx.xxx.xxx:5000"] }到daemon.json文件中/etc/docker。而且我还将docker-fileat的内容更改/etc/default/为DOCKER_OPTS="--config-file=/etc/docker/daemon.json". 我在所有节点上进行了更改,然后我重新启动了 docker 守护进程。
我可以使用以下命令从每个节点提取我的图像:
sudo docker pull xxx.xxx.xxx.xxx:5000/helloworldimage
我尝试使用以下命令从主节点创建我的容器:
sudo kubectl run test --image xxx.xxx.xxx.xxx:5000/helloworldimage
比我收到以下错误:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled <unknown> default-scheduler Successfully assigned default/test-775f99f57-m9r4b to rpi-2
Normal BackOff 18s (x2 over 44s) kubelet, rpi-2 Back-off pulling …Run Code Online (Sandbox Code Playgroud) 我安装了 microk8s 并启用了注册表插件我能够将 docker 图像推送到此注册表,并且我能够在部署中使用这些图像。
但我正在尝试列出已经推送到此注册表的图像。我怎样才能做到这一点?有没有相关的 API?
docker ×10
docker-registry ×10
kubernetes ×4
dockerhub ×2
microk8s ×2
docker-pull ×1
docker-swarm ×1
json ×1
kubectl ×1
linux ×1
proxy ×1
security ×1
ssl ×1