我想在自我修复的AWS ECS集群上运行一个私有的,安全的,经过身份验证的docker注册表.群集设置已完成且工作正常,但我很难开始registry:latest运行.问题是,每次我推送图像时,推动blob失败,并进入重试周期,除非我得到超时.
为了确保我的ECS设置不是阻止程序,我尝试使用Docker4Mac 1.12.0-a在本地设置所有内容.
首先,非常基本的设置工作.我创建了自己的注册表图像版本,在那里我将我的TLS证书包和密钥以及必要的htpasswd文件直接放入图像中.[我知道,这是不安全的,我只是为了测试目的而这样做].所以这是我的Dockerfile:
FROM registry:latest
COPY htpasswd /etc/docker
COPY server_bundle.pem /etc/docker
COPY server_key.pem /etc/docker
Run Code Online (Sandbox Code Playgroud)
server_bundle.pem我的域名(CN =*.mydomain.com)的通配符证书mydomain.com是第一个,后面是中间CA证书,因此客户应该感到高兴.我的htpasswd文件是使用推荐的方法创建的:
docker run --entrypoint htpasswd registry:2 -Bbn heyitsme mysupersecurepassword > htpasswd
Run Code Online (Sandbox Code Playgroud)
我建立了我的形象:
docker build -t heyitsme/registry .
Run Code Online (Sandbox Code Playgroud)
然后我运行一个非常基本的版本,没有TLS和身份验证:
docker run --restart=always -p 5000:5000 heyitsme/registry
Run Code Online (Sandbox Code Playgroud)
我实际上可以拉动,标记和重新推送图像:
docker pull alpine
docker tag alpine localhost:5000/alpine
docker push localhost:5000/alpine
Run Code Online (Sandbox Code Playgroud)
这有效.接下来,我通过环境变量进行TLS和基本身份验证:
docker run -h registry.mydomain.com --name registry --restart=always -p 5000:5000 \
-e REGISTRY_HTTP_HOST=http://registry.mydomain.com:5000 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/etc/docker/server_bundle.pem …Run Code Online (Sandbox Code Playgroud) 我无法通过http://localhost:8000在docker镜像中运行来访问基于nodejs的服务.我正在使用Docker for Mac(https://docs.docker.com/docker-for-mac/)
我在这里按照教程https://nodejs.org/en/docs/guides/nodejs-docker-webapp/.
服务器在端口8000上运行.我使用以下命令启动docker镜像:
$ docker run -p 8000:8000 -d geuis/node-server:latest
Run Code Online (Sandbox Code Playgroud)
如果我跑,docker ps我看到:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9fa2e446918b geuis/node-server:latest "npm start" 6 seconds ago Up 5 seconds 0.0.0.0:8000->8000/tcp unruffled_lewin
Run Code Online (Sandbox Code Playgroud)
如果我docker exec -it 9fa2e446918b /bin/bash可以访问docker vm,我可以curl http://localhost:8000从容器内部访问服务器.
但是,我curl http://localhost:8000从我的系统终端尝试相同的操作并且无法访问它.
不知道接下来我需要做什么.
我的Docker进入错误状态,无法再使用它。
输出docker system info:
Containers: 14
Running: 2
Paused: 0
Stopped: 12
Images: 61
Server Version: 18.03.1-ce
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: error
NodeID:
Error: open /var/lib/docker/swarm/worker/tasks.db: read-only file system
Is Manager: false
Node Address: 192.168.65.3
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init …Run Code Online (Sandbox Code Playgroud) 我正在运行 Docker for Windows 的内置 Kubernetes 集群以进行开发,我需要对集群运行一些 Docker 命令,但我找不到 Minikube 的“minikube docker-env”的替代品。
我想做这样的事情来操作 Kubernetes 集群:
eval $(minikube docker-env)
Run Code Online (Sandbox Code Playgroud)
我想在完成 Kubernetes 集群后做这样的事情:
eval $(docker-machine env -u)
Run Code Online (Sandbox Code Playgroud) 我有 Docker for Mac 和 LinuxKit 内核版本4.9.125-linuxkit。
perf在主机上不可用。我尝试将其安装在我的 Ubuntu 容器之一上,但无法获取内核linux-tools的版本控制包4.9.125。所以当我尝试运行 perf 时,我只是得到
WARNING: perf not found for kernel 4.9.125
有没有办法perf在我的 LinuxKit/Hyperkit 主机上运行?如果可以,如何运行?
我最近在Docker社区上阅读了很多关于如何使用Docker for Mac在PHPStorm中调试PHP应用程序的帖子.所有这些都包含有用的信息,但没有在一个地方看到工作解决方案.
我在本地桌面上为Kubernetes使用Docker Desktop for mac。我正在尝试连接到安装在 pod 中的本地机器上的数据库,但无法确定主机地址应该是什么。我如何与我的机器在 pod 中的地址相关联?
请注意,我无法使用机器的 ip,因为 db 端口在我的网络中被阻止。
docker ×7
kubernetes ×2
dockerfile ×1
localhost ×1
macos ×1
perf ×1
perl ×1
php ×1
ssh-tunnel ×1
xdebug ×1