我的 docker-compose 文件中有几个图像和服务,用于创建 PHP、Apache、MySql 和 PHPMyAdmin 环境来运行我的网站。任何人都可以帮助我如何在 Docker Hub 上推送我的所有图像或使用我的网站代码创建一个环境吗?
Dockerfile
FROM php:7.4-apache
RUN docker-php-ext-install mysqli
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
services:
php:
build:
context: .
dockerfile: Dockerfile
ports:
- 80:80
volumes:
- ./src:/var/www/html/
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
phpmyadmin:
image: phpmyadmin
restart: always
ports:
- 8080:80
environment:
- PMA_ARBITRARY=1
Run Code Online (Sandbox Code Playgroud)
index.php 和src文件夹中我的所有网站代码
我总是得到:
Error response from daemon: Get "https://myregistry.example.com/v2/": unauthorized: authentication required
Run Code Online (Sandbox Code Playgroud)
当尝试使用以下方式登录时:
docker login --username robot$myproject+myrobotaccount myregistry.example.com
Run Code Online (Sandbox Code Playgroud) 我使用 MAC OS X。我想在本教程中使用镜像,它的第 1 步需要这样做:
docker --registry-mirror=http://<my-docker-mirror-host> -d
Run Code Online (Sandbox Code Playgroud)
但是,当我在终端中使用此命令时,它不起作用:
提供但未定义的标志:--registry-mirror 请参阅“docker --help”。
然后,我在教程中使用另一种方式:
您可以将 --registry-mirror 选项添加到 /etc/default/docker 中的 DOCKER_OPTS 变量
我不知道在哪里添加这个 DOCKER_OPTS。我想在客户端 1.7.0 中使用镜像。谁能告诉我如何设置镜子?
我使用这个命令来创建镜像:
docker run -d -p 5000:5000 -e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/Users/v11/Documents/docker-registry --restart=always --name mirror -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 push localhost:5000/batman/ubuntu
Run Code Online (Sandbox Code Playgroud)
这个命令以前可以用,真不知道怎么回事。也许标志“STANDALONE=false”会影响?我想设置镜像,谁能告诉我怎么做。谢谢。
我有一个172.20.20.20在 port 中运行的私有 Docker 注册表5000。我已经将图像推pruebasjeje送给它。
现在,我需要使用 Ansible 任务拉取并运行图像:
- name: run container
docker:
registry: 172.20.20.20:5000
insecure_registry: true
image: pruebasjeje
state: reloaded
pull: always
ports:
- "8080:8080"
Run Code Online (Sandbox Code Playgroud)
但是当我执行它时,我收到这个错误:
致命:[本地主机]:失败!=> {"changed": false, "changes": ["{\"status\":\"Pulling repository docker.io/library/pruebasjeje\"}\r\n", "{\"errorDetail\": {\"message\":\"Error: image library/pruebasjeje:latest not found\"},\"error\":\"Error: image library/pruebasjeje:latest not found\"}\r\n"] , "failed": true, "msg": "无法识别的状态。", "status": ""}
似乎是在 docker.io 中寻找图像。我应该如何写我的任务才能做我想做的事?
谢谢。
我正在使用go-dockerclient库,我想使用CreateContainer go-dockerclient 方法创建容器,但是我应该在哪里传递我创建此函数的 docker 图像 ID
func CreateContainer(w http.ResponseWriter, r *http.Request){
client,err:=docker.NewTLSClient(Endpoint,Cert,Key,Ca)
if err!=nil{
panic(err)
}
container,er:=client.CreateContainer(docker.CreateContainerOptions{Name:"cont"})
if er!=nil{
panic(err)
}
}
Run Code Online (Sandbox Code Playgroud)
例如,如果我有一个给定的图像 ID,我应该在哪里添加它?
我想知道是否有一种标准方法来备份和恢复Nexus OSS 3 Artifact Repository.
是否足以备份"数据"目录并将其复制到正在运行的新实例?
我使用不同类型的存储库 - Maven,NPM,Docker等.
我有一个简单的 Kubernetes 作业(基于http://kubernetes.io/docs/user-guide/jobs/work-queue-2/示例),它使用了一个 Docker 映像,该映像已作为公共映像放置在我的 dockerhub 上帐户。这一切看起来像这样:
工作.yaml :
apiVersion: batch/v1
kind: Job
metadata:
name: job-wq-2
spec:
parallelism: 2
template:
metadata:
name: job-wq-2
spec:
containers:
- name: c
image: jonalv/job-wq-2
restartPolicy: OnFailure
Run Code Online (Sandbox Code Playgroud)
现在我想尝试使用需要身份验证的私有 Docker 注册表,如下所示:
docker login https://myregistry.com
但是我找不到有关如何将用户名和密码添加到 job.yaml 文件的任何信息。它是如何完成的?
所以我在这里做所有被Docker化的工作。Traefik和我的docker Registry实例一样都在容器中运行。如果我在注册表中单击,则可以从注册表中正常进行推/拉操作mydomain.com:5000/myimage。
问题出在我尝试使用443击打它时mydomain.com/myimage。我在这里设置的是Traefik反向代理,在侦听443 mydomain.com,并将内部请求转发到:5000我的Registry实例。
当我从Traefik网址进行推/拉时,它挂起并倒数,等待在循环上重试。当我查看注册表的日志时,每一个我都可以看到实例IS实际上与反向代理Traefik通信,但是,我一遍又一遍地(在客户端的每次重试中)都遇到此错误:
2018/05/31 21:10:43 http: TLS handshake error from proxy_container_ip:port: remote error: tls: bad certificate
关于TLS问题,Docker Registry确实非常严格。由于我仍在开发中,因此我在这里使用所有自签名证书。知道是什么原因导致此错误吗?我假设Traefik代理检测到注册表提供的证书不可信(自签名),因此没有完成“推送”请求,反之亦然-发送注册表时,注册表返回到Traefik代理会检测到它不受信任。
如果需要,我可以提供其他信息。当前设置是Traefik和Registry都有自己的.crt和.key文件集。这两个(当然)都启用了TLS。
谢谢。
我想知道在继续构建之前,是否可以FROM在 Dockerfile 中制作一条指令来拉取最新的图像(例如image:latest)?
目前,仅当尚未在本地存储图像时才会拉取图像。
我创建了注册表积分,当我像这样申请 pod 时:
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: registry.io.io/simple-node
imagePullSecrets:
- name: regcred
Run Code Online (Sandbox Code Playgroud)
它工作成功拉图像
但如果我尝试这样做:
apiVersion: apps/v1
kind: Deployment
metadata:
name: node123
namespace: node123
spec:
replicas: 5
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 2
maxUnavailable: 0
selector:
matchLabels:
name: node123
template:
metadata:
labels:
name: node123
spec:
containers:
- name: node123
image: registry.io.io/simple-node
ports:
- containerPort: 3000
imagePullSecrets:
- name: regcred
Run Code Online (Sandbox Code Playgroud)
在 pod 上会得到错误:ImagePullBackOff
当我描述它时
无法拉取镜像“registry.io.io/simple-node”:rpc 错误:代码 = 未知描述 = 来自守护进程的错误响应:获取 https://registry.io.io/v2/simple-node/manifests/latest:没有基本的身份验证凭据
有谁知道如何解决这个问题?
docker-registry ×10
docker ×7
kubernetes ×3
dockerfile ×2
ansible ×1
bash ×1
cloud ×1
docker-push ×1
go ×1
harbor ×1
nexus ×1
npmjs ×1
sonatype ×1
ssl ×1
traefik ×1