Docker技术实践——高级篇
1.1 搭建私有仓库 我们需要看下如何搭建容器的私有仓库: Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库。 私有仓库有许多优点: 1.节省网络带宽,不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可; 2.提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。 #docker pull registry #dockerrun -d -p 5000:5000 --name registry-srv registry 默认仓库存放于容器内的/tmp/registry目录下 镜像需要通过docker tag进行修改,符合仓库需要。 #docker push 192.168.1.104:5000/hello-world 如果出现如下错误: http: server gave HTTP response to HTTPS client 这是因为docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。 MAC机器中修改: 在Docker的preference中,点击Daemon,Basic页签中,在Insecureregistries中增加一行: http://192.168.1.104:5000 点击apply and restart重启docker即可。 Ubuntu机器中修改: (Ubuntu的地址为/etc/init/docker.conf),在其中增加 --insecure-registry 192.168.1.104:5000 exec"$DOCKERD"$DOCKER_OPTS--raw-logs --insecure-registry 192.168.1.104:5000 然后重启 docker; #service docker restart; 如果上述方法不行,那么如下: 在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入: { "insecure-registries":["192.168.1.104:5000"]} 然后重启 docker; #service docker restart; 1.2 上传镜像 # docker push registry:5000/image_name 1.3 查看镜像 # curl -XGET http://registry:5000/v2/_catalog # curl -XGEThttp://registry:5000/v2/image_name/tags/list 例如: #curl -XGEThttp://192.168.1.104:5000/v2/_catalog 输出如下: {"repositories":["centos","hello-world"]} # curl -XGEThttp://192.168.1.104:5000/v2/centos/tags/list 输出如下: {"name":"centos","tags":["7.1"]} 1.4 Docker-compose Docker-compose需要docker-compose.yml文件,依赖yml文件,没有yml文件就没有勇武之地了。 Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作。 编辑docker-compose.yml内容如下: mysql: image: csphere/mysql:5.5 ports: - "3306:3306" wordpress: image: csphere/wordpress:10 ports: -"80:80" 启动容器如下: docker-composeup-d 关闭容器: docker-compose stop 2. Q&A 2.1 编译错误 Rpmdb checksum is invalid: dCDPT(pkgchecksums): elfutils-libs.x86_64 0:0.168-8.el7 - u 答:在 Docker 文件中第一个 yum 之前加入如下命令对rpmdb 进行构筑. RUN rpm --rebuilddb&& \