日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker安装及Docker私有仓库部署流程

發布時間:2023/12/16 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker安装及Docker私有仓库部署流程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Docker安裝及Docker私有倉庫部署流程

docker安裝

此文檔是基于Centos7操作。用戶為root。
系統內核需要3.8或更高版本

//查看內核 $ uname -a //安裝docker,此腳本會檢查內核并安裝 $ curl -fsSL https://get.docker.com/ | sh //啟動服務 $ systemctl start docker //查看版本 $ docker --version

部署私有倉庫

鏡像在公有倉庫dockerhub拉取推送非常慢,而且把項目的鏡像放在公網很不安全,在局域網內搭建私有倉庫安全快捷。
docker registry server分為2個版本,第一版是python寫成的,第二版是go寫的。 本文檔基于go版本,需要docker version 1.6以上。

//查看鏡像 $ docker images//刪除鏡像 -f表示強制刪除 $ docker rmi -f 鏡像id//運行基于容器的registry. registry:2鏡像不存在時 會去dockerhub上面下載鏡像并運行。--restart 設置為always,無論容器的退出代碼是什么,Docker都會重啟該容器, 設置為on-failure時 只有當容器的退出代碼為非0時才會重啟,如--restart=on-failure:5表示最多重啟5次 $ docker run -d -p 5000:5000 --restart=always --name registry registry:2 //默認的registry data是存儲在容器docker volume中的,如果registry停止volume是會被刪除的 //把data共享出來到宿主機目錄/data下 $ docker run -d -p 5000:5000 --restart=always --name registry -v /data:/var/lib/registry registry:2 //獲取容器日志 與tail -f 類似 $ docker logs centos_d_container -f//來查看當前系統中正在運行的容器列表 $ docker ps //命令會列出所有的容器 $ docker ps -a //停止容器 start restart $ docker stop registry (容器名或容器id)//刪除容器 $ docker rm registry (容器名或容器id)//刪除全部容器 $ docker rm `docker ps -a -q`//現在測試下私有倉庫 //下載ubuntu鏡像 $ docker pull ubuntu //打tag 將ubuntu取名為192.168.1.182:5000/ubuntu 不寫tag默認為latest $ docker tag ubuntu 192.168.1.182:5000/ubuntu //推送到私有倉庫 $ docker push 192.168.1.182:5000/ubuntu //查看 //可以直接在宿主機共享目錄 查到ubuntu $ ll /data/docker/registry/v2/repositories///使用API查看 $ curl https://192.168.1.182:5000/v2/_catalog

客戶端使用私有倉庫

先安裝好Docker 請看上文

//配置私有倉庫地址 $ echo '{ "insecure-registries":["192.168.1.182:5000"] }' > /etc/docker/daemon.json//重啟生效 $ systemctl restart docker//拉取私有倉庫中的ubuntu鏡像 $ docker pull 192.168.1.182:5000/ubuntu //也可以推送到私有倉庫,比如本地有個centos 鏡像 $ docker tag centos 192.168.1.182:5000/centos $ docker push 192.168.1.182:5000/centos //使用API查看 $ curl https://192.168.1.182:5000/v2/_catalog

創建證書

如果私有倉庫想放到外網訪問,這樣誰都可以訪問,就不安全了,需要登錄認證
running a domain registry using TLS

//需要安裝openssl $ which openssl//創建證書 $ openssl genrsa -out server.key 2048 $ openssl req -new -key server.key -out server.csrYou are about to be asked to enter information that will be incorporated into 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 blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:guangdong Locality Name (eg, city) [Default City]:shenzhen Organization Name (eg, company) [Default Company Ltd]:mobi Organizational Unit Name (eg, section) []:soft Common Name (eg, your name or your server's hostname) []:registrydomain.com Email Address []:liangxxx@xxx.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

然后把證書安裝到系統中.

$ cp server.crt /etc/pki/ca-trust/source/anchors/ $ update-ca-trust enable $ update-ca-trust extract

然后在/etc/hosts中配置域名,重啟docker進程

$ vim /etc/hosts 192.168.1.182 registrydomain.com $ systemctl restart docker

然后使用證書啟動容器。

$ mkdir certs $ cp server.crt certs/ $ cp server.key certs/ $ docker run -d -p 5000:5000 --name registry --restart=always -v /data:/var/lib/registry -v $PWD/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt -e REGISTRY_HTTP_TLS_KEY=/certs/server.key registry:2

在其他客戶端中也進行安裝證書和配置域名并重啟docker進程后就可以使用了

用戶名密碼應用

//用戶名:hello,密碼:world $ sh -c "docker run --entrypoint htpasswd registry:2 -Bbn hello world > auth/htpasswd"$ docker run -d -p 5000:5000 --restart=always --name registry -v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v `pwd`/certs:/certs -v /data:/var/lib/registry -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt -e REGISTRY_HTTP_TLS_KEY=/certs/server.key registry:2//登錄 輸入用戶名密碼hello:world $ docker login registrydomain.com:5000//登出 $ docker logout registrydomain.com:5000

客戶端用戶名密碼登錄使用私有倉庫

//server.crt 倉庫生成的證書 $ cp server.crt /etc/pki/ca-trust/source/anchors/ $ update-ca-trust enable $ update-ca-trust extract//然后在/etc/hosts中配置域名,重啟docker進程 $ vim /etc/hosts 192.168.1.182 registrydomain.com$ systemctl restart docker$ docker login registrydomain.com -u hello -p world

界面管理私有倉庫

//登錄成功后查BASIC_AUTH值 $ cat /root/.docker/config.json//啟動界面 $ docker run -d -p 8080:8080 --name web --link registry \-e REGISTRY_URL=https://192.168.1.182:5000/v2 \-e REGISTRY_TRUST_ANY_SSL=true \-e REGISTRY_READONLY=false \-e REGISTRY_BASIC_AUTH="aGVsbG86d29ybGQ=" \-e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web

瀏覽器訪問:http://192.168.1.182:8080/

可以界面上刪除鏡像,增加delete配置

//把配置文件拷貝出來 docker cp registry:/etc/docker/registry/config.yml config.yml $ vim config.yml storage:cache:blobdescriptor: inmemoryfilesystem:rootdirectory: /var/lib/registrydelete: enabled: true...//指定配置文件啟動 $ docker run -d -p 5000:5000 --restart=always --name registry -v `pwd`/config.yml:/etc/docker/registry/config.yml -v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v `pwd`/certs:/certs -v /data:/var/lib/registry -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt -e REGISTRY_HTTP_TLS_KEY=/certs/server.key registry:2

注意:不建議使用刪除,鏡像是以層的概念,每個鏡像可能依賴相同的層,在這里刪除不會物理刪除

Docker Compose

安裝docker-compose

$ curl -L https://github.com/docker/compose/releases/download/1.11.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose $ chmod +x /usr/local/bin/docker-compose $ docker-compose --version//列出容器 $ docker-compose ps //version 1現在已不支持,建議使用version 2 //下面使用docker-compose 以服務方式 啟動私有倉庫和界面管理 $ vim docker-compose.yml version: '2' services:registry:restart: alwaysimage: registry:2ports:- 5000:5000environment:REGISTRY_HTTP_TLS_CERTIFICATE: /certs/server.crtREGISTRY_HTTP_TLS_KEY: /certs/server.keyREGISTRY_AUTH: htpasswdREGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswdREGISTRY_AUTH_HTPASSWD_REALM: Registry Realmvolumes:- ./config.yml:/etc/docker/registry/config.yml- ./auth:/auth- ./certs:/certs- /data:/var/lib/registrynetworks:- registry-netweb:restart: always image: hyper/docker-registry-webports:- 8080:8080environment:REGISTRY_URL: https://registry:5000/v2REGISTRY_TRUST_ANY_SSL: "true"REGISTRY_READONLY: "false"REGISTRY_BASIC_AUTH: aGVsbG86d29ybGQ=REGISTRY_NAME: registry:5000networks:- registry-net networks:registry-net://后臺啟動 $ docker-compose up -d

總結

以上是生活随笔為你收集整理的Docker安装及Docker私有仓库部署流程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。