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

网友投稿 244 2022-10-20

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

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

docker安装

此文档是基于Centos7操作。用户为root。系统内核需要3.8或更高版本

//查看内核 $ uname -a //安装docker,此脚本会检查内核并安装 $ curl -fsSL | 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 请看上文

//配置私有仓库地址 $ 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 running a domain registry using TLS

//需要安装openssl $ which openssl //创建证书 $ openssl genrsa -out server.key 2048 $ openssl req -new -key server.key -out server.csr You 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=\ -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: inmemory filesystem: rootdirectory: /var/lib/registry delete: 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 -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: always image: registry:2 ports: - 5000:5000 environment: REGISTRY_HTTP_TLS_CERTIFICATE: /certs/server.crt REGISTRY_HTTP_TLS_KEY: /certs/server.key REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm volumes: - ./config.yml:/etc/docker/registry/config.yml - ./auth:/auth - ./certs:/certs - /data:/var/lib/registry networks: - registry-net web: restart: always image: hyper/docker-registry-web ports: - 8080:8080 environment: REGISTRY_URL: https://registry:5000/v2 REGISTRY_TRUST_ANY_SSL: "true" REGISTRY_READONLY: "false" REGISTRY_BASIC_AUTH: aGVsbG86d29ybGQ= REGISTRY_NAME: registry:5000 networks: - registry-net networks: registry-net: //后台启动 $ docker-compose up -d

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:RestTemplate请求失败自动重启机制精讲
下一篇:Redis----使用Docker安装Redis
相关文章

 发表评论

暂时没有评论,来抢沙发吧~