Docker

Docker 學習之路 – 倉庫使用者管理

Google+ Pinterest LinkedIn Tumblr

現在誰都有許可權去操作倉庫,而且如果人多了,每個人都改改配置也好麻煩.

那可以簽名證書,不過,你先有個指向域名…

Docker 學習之路 – 倉庫使用者管理

沒多久,域名就生效了.

建立SSL證書也是個麻煩事情.

第一步.建立 CA 私鑰(我就敷衍了事,全部回車.)

openssl genrsa -out "root-ca.key" 4096
openssl req -new -key "root-ca.key" -out "root-ca.csr" -sha256

Docker 學習之路 – 倉庫使用者管理

第二步,(新建)配置根證書檔案root-ca.cnf

[root_ca]
basicConstraints = critical,CA:TRUE,pathlen:1
keyUsage = critical, nonRepudiation, cRLSign, keyCertSign
subjectKeyIdentifier=hash

第三步,簽發.

openssl x509 -req  -days 3650  -in "root-ca.csr" -signkey "root-ca.key" -sha256 -out "root-ca.crt" -extfile "root-ca.cnf" -extensions root_ca

Docker 學習之路 – 倉庫使用者管理

第四步,生成站點私鑰.(不要抄我域名了~)

openssl genrsa -out "docker.lijingquan.net.key" 4096

Docker 學習之路 – 倉庫使用者管理

第五步,生成私鑰請求檔案.(繼續敷衍了事)

openssl req -new -key "docker.lijingquan.net.key" -out "site.csr" -sha256

Docker 學習之路 – 倉庫使用者管理

第六步,配置證書.新建site.cnf檔案.

[server]
authorityKeyIdentifier=keyid,issuer
basicConstraints = critical,CA:FALSE
extendedKeyUsage=serverAuth
keyUsage = critical, digitalSignature, keyEncipherment
subjectAltName = DNS:docker.lijingquan.net, IP:173.255.197.12
subjectKeyIdentifier=hash

Docker 學習之路 – 倉庫使用者管理

第七步:部署

openssl x509 -req -days 750 -in "site.csr" -sha256 -CA "root-ca.crt" -CAkey "root-ca.key" -CAcreateserial -out "docker.lijingquan.net.crt" -extfile "site.cnf" -extensions server

第八步:把得到的兩個檔案放ssl資料夾.(我推薦挪到/etc/docker/registry/ssl/)

Docker 學習之路 – 倉庫使用者管理

容器裏面的/etc/docker/registry/config.yml是配置檔案,但是,我們不能操作他.在容器外做一個config.yml,然後用檔案掛載方式掛進去.(根據你實際情況作出改變)

version: 0.1
log:
  accesslog:
    disabled: true
  level: debug
  formatter: text
  fields:
    service: registry
    environment: staging
storage:
  delete:
    enabled: true
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
auth:
  htpasswd:
    realm: basic-realm
    path: /etc/docker/registry/auth/nginx.htpasswd
http:
  addr: :443
  host: https://docker.domain.com
  headers:
    X-Content-Type-Options: [nosniff]
  http2:
    disabled: false
  tls:
    certificate: /etc/docker/registry/ssl/docker.lijingquan.net.crt
    key: /etc/docker/registry/ssl/docker.lijingquan.net.key
health:
  storagedriver:
    enabled: true
    interval: 10s
threshold: 3

再做一個auth的資料夾.(記得替換使用者名稱密碼)

docker run --rm --entrypoint htpasswd registry -Bbn username password > auth/nginx.htpasswd

Docker 學習之路 – 倉庫使用者管理

建立docker-compose.yml(這個我也不太理解,先做著.)

version: '2'
 
services:
  registry:
    image: registry
    ports:
      - "443:443"
    volumes:
      - ./:/etc/docker/registry
      - registry-data:/var/lib/registry
 
volumes:
  registry-data:

想啟動,發現缺元件.

apt-get install docker-compose
docker-compose up -d

Docker 學習之路 – 倉庫使用者管理

現在目錄結構.

Docker 學習之路 – 倉庫使用者管理

之前登入過DockerHub,現docker logout,然後docker login docker.lijingquan.net,然後悲劇了,自簽證書的毛病.

Docker 學習之路 – 倉庫使用者管理

還能怎樣,信任他.然後重啟容器服務,再重啟倉庫容器.就可以登入.

echo -n | openssl s_client -showcerts -connect docker.lijingquan.net:443 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >> /etc/ssl/certs/ca-certificates.crt

Docker 學習之路 – 倉庫使用者管理

其他操作就沒差別了… (還是開放docker好啊.)

好像還遇到nginx 403問題,說是檔案過大…

Write A Comment