我已经安装了 Docker 1.9,想知道我是否以正确的方式使用指令。
从 internal.docker.registry/image1
MAINTAINER internal@abc.com
COPY sample.war webapps/sample.war
STOPSIGNAL SIGKILL
我的理解是,当我做
泊坞窗停止容器_id
,它将停止在容器内运行的 tomcat。它还将删除 Pid 文件。
请验证我是否有正确的理解。
背景
有一个我无法控制的私有 docker 注册表。无法从我的计算机访问此注册表,但可以从我有权访问的远程服务器访问。
这是我当前(效率很低)的工作流程:
# On my machine
$ docker save IMAGE > FILE
$ scp FILE SERVER
$ ssh SERVER
# On the server
$ docker load < FILE
$ docker tag -f IMAGE REGISTRY:5000/IMAGE
$ docker push REGISTRY:5000/IMAGE
Run Code Online (Sandbox Code Playgroud)
问题
即使大多数 docker 层没有变化,我也需要保存、上传和加载整个 tarball 来推送图像。
我尝试使用 ssh 将 docker 注册表端口(5000)转发到我机器上的端口:
$ ssh -L 5042:REGISTRY:5000 SERVER
Run Code Online (Sandbox Code Playgroud)
现在我可以从我的机器与注册表进行通信:
$ curl localhost:5042/v2/
{}
Run Code Online (Sandbox Code Playgroud)
但是 docker 不会向它推送图像:
$ docker tag IMAGE localhost:5042/IMAGE
$ docker push localhost:5042/IMAGE
The push refers to a repository …Run Code Online (Sandbox Code Playgroud) 从私有 V2 注册表中拉取时,docker 1.9.1 在 centos7 上拉取失败。
$ docker -v
Docker version 1.9.1, build 78ee77d/1.9.1
$ docker pull web-docker.bin-repo.hostname.com/web-dev:latest
Trying to pull repository web-docker.bin-repo.hostname.com/web-dev ...
failed
manifest invalid: manifest invalid
Run Code Online (Sandbox Code Playgroud)
相同的命令在 docker 1.10.3 的 osx 上运行良好。谁能告诉我为什么这不起作用以及如何进一步排除故障?
更新:这是它试图提取的清单。它可以拉取 v1 清单,但在 v2 清单上失败,如下所示。
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"config": {
"mediaType": "application/octet-stream",
"size": 7503,
"digest": "sha256:58672cb2c8c6d44c1271a5ca38e60a4ab29fb60050bc76995ce662c126509036"
},
"layers": [
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 32,
"digest": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 72038766,
"digest": "sha256:35d9d5d11536c0c6843ecd106dc710b5c54b8198aa28710e73dba2cbe555847f"
},
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 19361671,
"digest": …Run Code Online (Sandbox Code Playgroud) 我想知道当我拉出某个图像时,当您运行时docker images会出现“创建”字段,但不会显示图像被拉出的日期。
我在自己的机器上托管了一个私人Gitlab.我将我的代码存储在Gitlab中,并希望从Dockerfile构建一个Docker镜像,然后将其推送到我的Amazon ECR注册表.不幸的是,这不起作用,因为它会抛出一个错误:
Flag --email has been deprecated, will be removed in 1.13.
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
/dev/mapper/control: open failed: Operation not permitted
Failure to communicate with kernel device-mapper driver.
Check that device-mapper is available in the kernel.
Command failed
mount: permission denied
Could not mount /sys/kernel/security.
AppArmor detection and --privileged mode might break.
mkdir: cannot create directory '/sys/fs/cgroup/name=systemd': Read-only file system
mount: mount point /sys/fs/cgroup/name=systemd is not a directory
ln: …Run Code Online (Sandbox Code Playgroud) 来自守护进程的错误响应:Get https://registry.xxx.com:5000/v1/users/ : dial tcp: lookup registry.xxx.com on 192.168.65.1:53: read udp 192.168.65.2:42307->192.168。 65.1:53:I/O 超时
我已经设置了一个在 Ubuntu 服务器上运行的私有 docker 注册表,但是当我执行“docker login https://registry.xxx.com:5000 ”时不断收到上述错误。
当我从我的手机网络运行“curl -v https://registry.xxx.com:5000 ”时,我可以解析主机并成功登录到注册表。但是当我从注册表所在的同一网络运行“curl -v https://registry.xxx.com:5000 ”时,我不能这样做并得到“无法解析主机”错误。
似乎无法解析域。我有一个draytek路由器。
有任何想法吗?
ECR上的UI不允许您将标签应用于图像。当您将具有存在标签的图像推送到ECR时,现有图像将按预期取消标记。但是,似乎没有下载未标记图像的方法。例如,我不能简单地下载图像哈希
docker pull myarn.amazonaws.com/sandbox:e226e9aaa12beb32bfe65c571cb60605b2de13338866bc832bba0e39f6819365
Error response from daemon: manifest for myarn.amazonaws.com/sandbox:e226e9aaa12beb32bfe65c571cb60605b2de13338866bc832bba0e39f6819365 not found
Run Code Online (Sandbox Code Playgroud) 我docker version 18.09.0, build 4d60db4在Windows计算机上使用,并且尝试使用以下命令登录Artifactory,
docker login docker-registery.company.net
Run Code Online (Sandbox Code Playgroud)
它提示输入用户名和密码,我正在提供它们,但是我无法登录。它给了我以下错误:
Error response from daemon: Get https://docker-registery.company.net/v2/: tls: server selected unsupported protocol version 301
Run Code Online (Sandbox Code Playgroud)
注意:我可以使用相同的用户名和密码通过Web浏览器登录Artifactory Repo Browser。
当我尝试从命令行登录时,是什么导致此问题?是某种代理或证书问题吗?
我想拒绝除我自己的所有 docker 注册表之外的所有 docker 注册表。我正在为 docker 注册表及其映像寻找某种策略。
例如我的注册表名称是registry.my.com. 我想让 kubernetes 只从 拉/运行图像registry.my.com,所以:
image: prometheus:2.6.1
Run Code Online (Sandbox Code Playgroud)
或任何其他应被拒绝,同时:
image: registry.my.com/prometheus:2.6.1
Run Code Online (Sandbox Code Playgroud)
不应该。
有没有办法做到这一点?
我知道 JFrog Artifactory Pro 支持私有 docker 注册表,我们可以使用它来从 Artifactory 推送和拉取 docker 镜像。我想知道 Artifactory OSS 版本是否也提供相同的支持。
谢谢
docker-registry ×10
docker ×9
artifactory ×2
docker-image ×1
dockerfile ×1
dockerhub ×1
gitlab-ci ×1
jfrog-cli ×1
kubernetes ×1