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>
推送和拉取每次都会更新最新的镜像,只要私服有更新本地就会更新