https://docs.docker.com/install/前端
https://www.daocloud.io/mirrorjava
https://docs.docker.com/registry/deploying/node
# 啓動docker私服 docker run -d -p 5000:5000 --restart=always --name registry registry:2
# 方案1 vim /etc/docker/daemon.json # 添加配置`"insecure-registries":["172.18.123.72:5000"],`到json對象中 systemctl reload-daemon systemctl restart docker # 方案2 # 修改docker啓動命令,注入配置參數 vim /usr/lib/systemd/system/docker.service # ExecStart=/usr/bin/dockerd後添加配置:」 --insecure-registry 172.16.48.129:5000「 systemctl reload-daemon systemctl restart docker
拉取鏡像發送到私服,使用ubuntu:16.04
鏡像,而且從新打tagmy-ubuntu
, 而後推送到私人倉庫. 最後鏡像 ubuntu:16.04
和my-ubuntu
鏡像從本地刪除my-ubuntu
鏡像從私服中拉取。git
$ docker pull ubuntu:16.04 $ docker tag ubuntu:16.04 localhost:5000/my-ubuntu $ docker push localhost:5000/my-ubuntu $ docker image remove ubuntu:16.04 $ docker image remove localhost:5000/my-ubuntu $ docker pull localhost:5000/my-ubuntu
https://docs.docker.com/registry/spec/api/#detailgithub
# 先安裝java環境:參考百度 # 獲取官方jar包 wget http://ftp-nyc.osuosl.org/pub/jenkins/war-stable/2.164.2/jenkins.war # 使用命令行直接啓動,配置文件生成在home目錄中的.jenkins目錄中 java -jar jenkins.war --httpPort=8080 & # 日誌中含有啓動驗證祕鑰,或者在文件中 cat /var/jenkins_home/secrets/initialAdminPassword # 默認配置安裝,設定管理員帳號,進入jenkins
git clone https://github.com/fly-piglet/ant-design-pro.git
docker-publish.sh
記得賦予可執行權限web
# 設定私服地址 registryhosts="localhost:5000" # 設定項目名稱 imageName="project" # 設定容器啓動名稱 containerName="project" # 設定tag,默認使用latest、實際按照生產版本進行使用 tag="latest" # 拼接鏡像的名字 allImageNmae="${registryhosts}/${imageName}:${tag}" echo "1. 安裝依賴 + 編譯項目" npm install && npm run build echo "2. 編譯鏡像 + 標籤鏡像" docker build -f Dockerfile.hub -t ${allImageNmae} ./ echo "3. 推送鏡像" docker push ${allImageNmae}
docker-start.sh
啓動鏡像腳本,能夠在部署目標機器執行redis
# 設定私服地址 registryhosts="localhost:5000" # 設定項目名稱 imageName="project" # 設定容器啓動名稱 containerName="project" # 設定tag,默認使用latest、實際按照生產版本進行使用 tag="latest" # 拼接鏡像的名字 allImageNmae="${registryhosts}/${imageName}:${tag}" # 啓動的端口地址 port="8060" echo "1. 中止容器 + 刪除容器 + 刪除鏡像" docker stop ${containerName} && docker rm ${containerName} && docker rmi ${allImageNmae} echo "2. 拉取鏡像" docker pull ${allImageNmae} echo "3. 啓動鏡像" docker run -d -p ${port}:80 --name=${containerName} --restart=always ${allImageNmae} echo "4. 部署完畢: http://localhost:${port}/"
Ci流程
:經過git的webhook + jenkins自動化編譯 + 自動化ssh遠端機器 + 自動化部署。 環境區分
:默認的配置文件爲開發環境的配置,生產環境經過-v
外掛配置文件實現環境切換 使用配置文件進行區分,方便保證鏡像通過開發環境的測試,只是配置不一樣,保證一致性。 版本區分
:tag:無或者默認爲latest,須要管理版本按照1.0.0的順序遞增修改版本號便可 前端docker鏡像,暫時沒喲版本管理的需求,使用最新版,須要則啓用。docker
查看鏡像
npm
curl http:/localhost:5000/v2/_catalog
查看鏡像版本
json
curl http:/localhost:5000/v2/project/tags/list
清理鏡像
刪除全部鏡像,-f "dangling=true"過濾沒有打標籤的:默認是有打標籤,-q:只顯示ids編號
docker rmi $(docker images -f "dangling=true" -q)
中止容器 刪除容器
docker stop <contrinerId> && docker rm <contrinerId>
推送和拉取每次都會更新最新的鏡像,只要私服有更新本地就會更新