1、環境
1)Ubuntu14.04
2)docker 1.12.0
2、在Ubuntu14.04虛擬機器上安裝docker 1.12.0,本次實驗建立兩個虛擬機器,ip分別是192.168.110.137和192.168.110.138,其中192.168.110.138的hostname是ip-192-168-110-138.ec2.internal,並且在192.168.110.138的hosts檔案中添加如下記錄
192.168.110.138 ip-192-168-110-138 ip-192-168-110-138.ec2.internal
3、環境配置
1)192.168.110.138的配置
在/etc/default/docker內添加如下內容:
DOCKER_OPTS="--label com.example.db=mysql -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
2)192.168.110.138的配置。建立/etc/docker/certs.d/ip-192-168-110-138.ec2.internal:5000/
3)192.168.110.138的配置(自我簽署憑證,在/home目錄下執行如下操作)
> mkdir -p certs && -newkey rsa:4096 -nodes -sha256 -keyout /certs/domain.key \> -x509 -days 365 -out /certs/domain.crtGenerating a 4096 bit RSA private key..........++................................................................................................++writing new private key to '/certs/domain.key'-----You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [XX]:CNState or Province Name (full name) []:BJLocality Name (eg, city) [Default City]:BJOrganization Name (eg, company) [Default Company Ltd]:starOrganizational Unit Name (eg, section) []:cloudCommon Name (eg, your name or your server's hostname) []:ip-192-168-110-138.ec2.internalEmail Address []:a@a.com
4)192.168.110.138的配置
將/home/certs目錄下的domain.crt檔案拷貝到/etc/docker/certs.d/ip-192-168-110-138.ec2.internal:5000/目錄下,並將其名字改為ca.crt
5)192.168.110.137的配置
在/etc/default/docker內添加如下內容:
DOCKER_OPTS="--label com.example.db=mysql -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
5) 192.168.110.137的配置
將/home/certs目錄下的domain.crt檔案拷貝到/etc/docker/certs.d/ip-192-168-110-138.ec2.internal:5000/目錄下,並將其名字改為ca.crt
6)192.168.110.137的配置,在hosts檔案中添加如下內容
192.168.110.138 ip-192-168-110-138 ip-192-168-110-138.ec2.internal
2、實驗
1)在192.168.110.138虛擬機器上執行 docker pull registry:2.4.1
2)在192.168.110.138虛擬機器上執行如下操作(建立容器)
docker run -d -p 5000:5000 --name myregistry --restart=always -v /opt/registry/auth/:/auth/ -v /opt/registry/certs/:/certs/ -e "REGISTRY_AUTH=htpasswd" -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /opt/registry/:/var/lib/registry/ registry:2.4.1
注意:宿主機的/opt/auth/htpasswd檔案按照如下方法產生:
docker run --entrypoint htpasswd registry:2.4.1 -Bbn test test >> /opt/registry/auth/htpasswd
登入本地registry的使用者名稱和密碼分別是test和test
3)容器建立成功後,再進行push和pull操作的時候,需docker login操作,輸入使用者名稱和密碼。同樣
在137機器上進行push和pull操作之前,需要先進行docker login操作,然後輸入使用者名稱和密碼後進行push和pull操
作。