我希望在使用防火墙 IP 地址白名单的企业环境中实现 Docker。不幸的是,不能选择按域列入白名单。
是否有我需要打开以允许计算机完全访问 Docker Hub 的所有 IP 地址(包括端口)的列表?
还想知道是否有任何建议的策略来监控这些内容是否随着时间的推移而发生变化,以便我可以确保防火墙规则得到更新?
我有一个 Docker 映像,想要推送到我的注册表(托管在localhost)。我愿意:
docker push localhost:5000/my_image
Run Code Online (Sandbox Code Playgroud)
并且工作正常。但是,如果我标记图像并通过以下方式推送它:
docker push 172.20.20.20:5000/my_image
Run Code Online (Sandbox Code Playgroud)
我收到一个错误。
The push refers to a repository [172.20.20.20:5000/my_tomcat] (len: 1)
unable to ping registry endpoint https://172.20.20.20:5000/v0/ v2
ping attempt failed with error:
Get https://172.20.20.20:5000/v2/: Gateway Time-out
不能通过IP引用registry吗?如果是这样,我如何从另一个主机推送一个不是的图像localhost?
编辑
我这样运行注册表:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
Run Code Online (Sandbox Code Playgroud) 尝试将 docker 容器提交到映像时出现错误:
[root@dockerregistry /]# docker commit da4180ab1536 dockerregistry:5000/myimage
Error response from daemon: max depth exceeded
Run Code Online (Sandbox Code Playgroud)
它确实有很多先前提交的层:
[root@dockerregistry /]# docker history dockerregistry:5000/myimage
IMAGE CREATED CREATED BY SIZE COMMENT
b0922c490bf2 30 hours ago su - jenkins -c cd /home/jenkins/sources/ ; f 161.7 kB
91f441d37f9b 2 days ago su - jenkins -c cd /home/jenkins/sources/ ; f 75.05 kB
ac9669a5bd76 2 days ago su - jenkins -c cd /home/jenkins/sources/ ; f 63.68 kB
080c3d024017 2 days ago su - jenkins -c cd /home/jenkins/sources/ …Run Code Online (Sandbox Code Playgroud) 我们有自己的 docker 注册表来存储我们的图像。在此注册表中,除了使用 nginx 的一个项目外,我们可以毫无问题地推送图像。
这是我们在推送图像时遇到的错误,构建过程正常:
Upload failed, retrying: file integrity checksum failed for \"var/log/alternatives.log\"
Run Code Online (Sandbox Code Playgroud)
我们甚至尝试在构建和推送映像时删除 Docker 文件中的该文件,但没有成功。
有谁知道这里发生了什么以及如何解决这个问题?有什么办法可以避免这种完整性校验和验证吗?或者甚至更好,有人知道如何不对日志文件执行完整性校验和验证吗?
谢谢!
在这里您可以找到在调试模式下运行的 docker 守护进程的完整输出:
dockerd[37603]: level=debug msg="Calling GET /_ping"
dockerd[37603]: level=debug msg="Calling POST /v1.29/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&shmsize=0&t=docker-registry.cobrowser.io%2Fnginx-edge%3Adevelop_8d07da6&target=&ulimits=null"
dockerd[37603]: level=debug msg="[BUILDER] Use cached version: [/bin/sh -c apt-get clean all && apt-get update && apt-get upgrade -y --no-install-recommends && apt-get install -y --no-install-recommends dnsutils]"
dockerd[37603]: level=debug msg="[BUILDER] Use cached version: [/bin/sh -c rm /etc/nginx/conf.d/*.conf]"
dockerd[37603]: level=debug msg="[BUILDER] Use cached version: [/bin/sh -c #(nop) WORKDIR /usr/src]"
dockerd[37603]: …Run Code Online (Sandbox Code Playgroud) 我是 DevOps 新手。
作为 gitci 的一部分,我在 GitLab 中有一个 Docker 文件。我计划创建一个 Docker 映像并将其推送到 ECR,然后使用该映像进行批处理。
我已经使用 ECR 中的现有图像完成了批处理部分。但无法创建 Docker 映像并使用 CloudFormation 进行推送。
我应该在 init 中使用命令吗?
先谢谢各位高手了
我在清理正在运行的私有 docker 注册表中的磁盘空间时遇到问题。我也无法理解 Docker API 调用返回的所有不同的摘要 SHA。
我的私人 docker 注册表设置为.../docker/registry/v2它包含两个文件夹:blobs(~1.4GB)和repositories(~944KB)。我已经在那里推送了几个存储库和多个标签。
起初,我只需要删除前端显示的某些 API 调用返回的存储库/标签,但现在我需要释放磁盘空间,但不知道如何操作。
1.删除Repo和标签名称(装饰)
我通过解析每个存储库的 Docker API 调用结果,在用户前端列出了 Docker 存储库及其标签GET /_catalog。GET /<repo name>/tags/list有时我需要删除一些东西,这样它们就不会出现在这个列表中,我可以通过以下方法来做到这一点。
GET /<repo name>/manifests/<tag>
DELETE /<repo name>/manifests/<digest SHA in headers.Docker-Content-Digest of the above response>
我不确定这是正确的方法,但我需要以某种方式控制前端显示,这目前已经有效。
此操作会将本地文件夹的大小减少repositories几 KB,但不会影响该blobs文件夹。
2. 清理磁盘空间并真正删除存储库
我陷入困境的是如何真正释放目录占用的大量磁盘空间blobs。:和各种GET /<repo name>/manifests/<tag>.返回许多不同的摘要 SHA 。body.config.digestbody.layers[i].digest
我尝试DELETE /<repo name>/blobs/<some digest>在这些不同的摘要上执行。对于某些人来说它是成功的,对于其他人来说它说找不到 blob。成功后,repositories目录大小会减少几 KB,但blobs目录大小不会改变。
我只是在点击后才尝试这样做,DELETE …
我有以下错误:
docker push registry.gitlab.com/user/rep-name
The push refers to repository [registry.gitlab.com/user/rep]
f319ccdf8ee4: Preparing
..
7032a7172c0a: Preparing
b16cd70f3a2c: Waiting
...
unauthorized: HTTP Basic: Access denied
Run Code Online (Sandbox Code Playgroud)
但是上一个登录成功了:
docker login registry.gitlab.com
Username: user
Password:
Login Succeeded
Run Code Online (Sandbox Code Playgroud)
码头工人版本:
docker -v
Docker version 19.03.8, build afacb8b7f0
Run Code Online (Sandbox Code Playgroud)
我使用的个人访问令牌是“api” https://gitlab.com/profile/personal_access_tokens
因为我有 2-factor ahorization。
我正在尝试在 Mac 计算机上创建 Docker 映像。该命令失败并出现以下错误。我使用的是 Docker 桌面版本 2.2.05。
Cannot run program "docker-credential-desktop": error=2, No such file or directory
Run Code Online (Sandbox Code Playgroud)
我在一些论坛上读过,其中包括 ~/.docker/config.json 中的 "credsStore": "osxkeychain" 或 "credsStore": "desktop"。解决了这个问题,但我找不到这个文件。
以前有人遇到过这个问题吗?任何输入将不胜感激。
docker dockerfile docker-registry docker-compose docker-desktop
我已经在我的服务器上安装了 gitlab-ce 13.2.0,并且容器注册表立即可用。
我可以从其他服务器(或我的本地机器)登录,但是当将图像推送到容器注册表时,我收到 404 错误: error parsing HTTP 404 response body: invalid character '<' looking for beginning of value: "<!DOCTYPE html>\n<html>\n<head>...
在我的 gitlab.rb 我有:
external_url 'https://git.xxxxxxxx.com'
nginx['enable'] = true
nginx['client_max_body_size'] = '250m'
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/trusted-certs/xxxxxxxx.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/trusted-certs/xxxxxxxx.com.key"
nginx['ssl_protocols'] = "TLSv1.1 TLSv1.2"
registry_external_url 'https://git.xxxxxxxx.com'
Run Code Online (Sandbox Code Playgroud)
令人困惑的是, theregistry_external_url与external_url. gitlab.rb 中有这些行:
### Settings used by GitLab application
# gitlab_rails['registry_enabled'] = true
# gitlab_rails['registry_host'] = "git.xxxxxxxx.com"
# gitlab_rails['registry_port'] = "5005"
# gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"
Run Code Online (Sandbox Code Playgroud)
但是当我取消注释时,我无法登录。
这里有什么问题?
我是否必须首先克隆 wait-for-it 存储库并编辑 wait-for-it.sh 文件的部分?
https://github.com/vishnubob/wait-for-it/blob/master/wait-for-it.sh
我试图在我的客户服务连接并运行其服务器后 5 秒后触发我的主文件。(或每当客户服务正确连接服务器时)。
我知道在 Dockerfile 中,我们需要向其中添加这些命令(将文件复制到 workdir,并将 shell 脚本作为可执行文件运行。)
...
COPY wait-for-it.sh .
RUN chmod +x /wait-for-it.sh
...
Run Code Online (Sandbox Code Playgroud)
这是我当前的 Docker-Compose 文件
version: '3'
services:
books:
build: './books'
container_name: "horus-books"
ports:
- "30043:30043"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
customers:
depends_on:
- books
build: './customers'
container_name: "horus-customers"
ports:
- "6000:6000"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
main:
depends_on:
- customers
build: './main'
container_name: "horus-main"
ports:
- "4555:4555"
command: ["./wait-for-it.sh", "customers:6000", "--", "node", "main.js"]
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
Run Code Online (Sandbox Code Playgroud)
主服务Dockerfile
FROM node:12.14.0
WORKDIR /usr/src/app …Run Code Online (Sandbox Code Playgroud) docker-registry ×10
docker ×7
dockerfile ×2
gitlab-ci ×2
containers ×1
dockerhub ×1
gitlab ×1
nginx ×1