我希望将nginx用于特定网址的用户级访问控制,
对于其他用户<uid>,他们仅限访问http://myserver.com/<uid>(METHOD POST).像用户larrycai只能POST到http://myserver.com/larrycai/xxx.
我不希望在上游服务器中拥有此控件.
基本身份验证用于访问身份验证,如下所示
server {
...
auth_basic "Auth";
auth_basic_user_file conf/htpasswd;
}
Run Code Online (Sandbox Code Playgroud)
现在,我如何将经过身份验证的用户映射到自己的URL?(我是nginx的新手).
我的用例是docker-registry前面的nginx docker容器,可以更好地控制用户访问.
2015.1.1更新
在uid未与UNIX系统相关的,它是唯一的应用程序,它被映射到REST接口
是否可以使用额外的模块,如openresty(基于lua)?
这是我的设置:
Docker 守护进程作为不安全的注册表运行,如下所示:
docker -d --iptables=true --insecure-registry 1.2.3.4:5000
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试从远程系统推送到该注册表时,它给了我不同的错误。
错误 1:
docker push 1.2.3.4:5000/test
EOF error:
FATA[0002] Error: Invalid registry endpoint 1.2.3.4:5000/v1: Get 1.2.3.4:5000/v1/_ping: EOF
Run Code Online (Sandbox Code Playgroud)
错误2:得到错误2后,我将ip添加到docker主机上的/etc/hosts。如果我尝试“docker push docker:5000/test”,它会尝试使用 https 并失败并显示错误 1,如果我尝试“docker push docker/test”,它会要求我输入用户名和密码。这是预期的吗??
Error:
The push refers to a repository [docker/test] (len: 1)
Sending image list
Please login prior to push:
Username: docker
Password:
Email: docker@internet.com
FATA[0011] Error response from daemon: Registration: "Forbidden username"
Run Code Online (Sandbox Code Playgroud)
如果它需要身份验证,我在哪里可以找到我的用户名和密码。我也可以在没有身份验证的情况下启动 docker 注册表吗??
我可能在这里完全错了,但是我从docker注册表中删除了32bit/ubuntu,并且我运行uname -a得到了x86_64
? ~ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
erlang-build-box latest fd61e832201b 7 weeks ago 1.841 GB
hello-world latest e45a5af57b00 9 weeks ago 910 B
32bit/ubuntu 14.04 6de534a1b6e3 4 months ago 290.7 MB
phusion/passenger-full 0.9.10 29eb0419ab6f 10 months ago 649.3 MB
? ~ docker run -t -i 6de534a1b6e3 /bin/bash
root@c40d7c09be96:/# uname -a
Linux c40d7c09be96 3.16.7-tinycore64 #1 SMP Tue Dec 16 23:03:39 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
root@c40d7c09be96:/# uname -m
x86_64 …Run Code Online (Sandbox Code Playgroud) 目前我正在将图像从一台机器推送到另一台机器.它的成功我可以根据推送机器的HTTP状态或基于注册表服务器的日志来确定.此时我想搜索我服务器上的注册表中的实际内容.我到目前为止发现的是来自外部的API调用,即使你调用它,你也必须知道图像的确切名称及其标记方式.在我的情况下,当我可以直接访问它时,我只想登记我的注册表中当前的图像.我没有找到任何相关的命令.
一.这是我创建图像的方式:
乙.从另一台机器我拉,改变并推动它:
现在我看到的问题是,每次重复B时,它都会尝试将~600MB(这是公共图像层)上传到注册表,这在我的情况下需要很长时间.
有没有办法避免上传整个600MB,而是推送唯一已更改的目录?
我究竟做错了什么?你们如何使用docker进行频繁推送?
我使用以下命令创建了一个私人注册表:
docker run -d -p 5000:5000 --restart = always --name registry -e REGISTRY_STORAGE_DELETE_ENABLED = true registry:2
我正在尝试使用Golang docker客户端API - > ImagePush将图像推送到此注册表
func(cli*Client)ImagePush(ctx context.Context,image string,options types.ImagePushOptions)(io.ReadCloser,error)
当我放大ImagePushOptions时,我看到结构是
type ImagePullOptions struct {All bool RegistryAuth string // RegistryAuth是注册表的base64编码凭据PrivilegeFunc RequestPrivilegeFunc}
AnyIdea如何创建RegistryAuth String
我尝试过以下方法:
类型AuthArgs struct {用户名字符串json:"username"密码字符串json:"password"电子邮件字符串json:"email"ServerAddress字符串json:"serveraddress"}
func(){
m:= AuthArgs {"docker","docker","","localhost:5000"} b,错误:= json.Marshal(m)
fmt.Println(string(b))encodeStr:= base64.StdEncoding.EncodeToString(b)
refStr:="localhost:5000 /"+ image +":"+ tag fmt.Println(refStr)resp,err:= cli.ImagePush(ctx,refStr,types.ImagePushOptions {RegistryAuth:encodeStr})我被困3天,任何帮助都会很棒
我设置了一个私有 Docker 注册表,并且我已经将一些图像从其他机器推送到这个注册表。它是一个 V2 注册表。我不知道从存储库中删除图像的新方法,因为这些推送的图像没有在 CLI 中列出“docker 图像”。
谁能建议我从磁盘中删除这些图像的正确方法?
非常感谢您的回答。
谢谢
我想将Pod部署到我的GKE Kubernetes集群中,该集群使用来自私有第三方Docker注册表(而不是 GCP的私有Docker注册表)的映像。
如何为GKE Kubernetes群集提供该私有存储库的凭据,以便可以在需要时提取图像?
google-cloud-platform kubernetes google-kubernetes-engine docker-registry gcp
我在Artifactory上使用Docker Registry.我可以使用docker命令拉/推图像.现在我尝试使用Jenkins pipline推送图像.
图像被调用registry-url/docker/image:latest.我在Artifactory上有一个docker存储库,它被调用docker.(我能够使用docker命令拉动并推送到这个仓库).
这个阶段描述了我的Artifactory配置:
...
stage('Deploy Docker image'){
steps {
script {
def server = Artifactory.server 'xxx'
def rtDocker = Artifactory.docker server: server
def buildInfo = rtDocker.push('registry-url/image:latest', 'docker')
//also tried:
//def buildInfo = rtDocker.push('registry-url/docker/image:latest', 'docker')
//the above results in registry/docker/docker/image..
server.publishBuildInfo buildInfo
}
}
}
...
Run Code Online (Sandbox Code Playgroud)
当我使用不同的路径时,我面临的manifest.json错误可能是正常的.我可以手动下载manifest.json : https://registry-url/artifactory/docker/image/latest/manifest.json.
我在Jenkins上使用了一个非常新版本的Docker:
Docker version 18.01.0-ce, build 03596f51b1
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是当我运行管道时,我在Jenkins中收到以下错误(需要50秒):
Pushing image: registry-url/image:latest
...
com.github.dockerjava.api.exception.DockerClientException: Could not push image: unknown: Not Found
at com.github.dockerjava.core.command.PushImageResultCallback.awaitSuccess(PushImageResultCallback.java:49)
at org.jfrog.hudson.pipeline.docker.utils.DockerUtils.pushImage(DockerUtils.java:60) …Run Code Online (Sandbox Code Playgroud) 我指的是此链接-Docker pull。
默认情况下,docker pull从Docker Hub(https://hub.docker.com)提取图像。
我想知道此链接在我们本地计算机设置中的何处配置。我正在Windows 10上使用Docker。
docker-registry ×10
docker ×8
artifactory ×1
containers ×1
dockerhub ×1
gcp ×1
go ×1
jenkins ×1
kubernetes ×1
linux ×1
lua ×1
nginx ×1
openresty ×1
registry ×1
ubuntu ×1