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-compose up -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&& \
目录
相关文章
|
2月前
|
运维 监控 Docker
构建高效微服务架构:从理论到实践构建高效自动化运维体系:Ansible与Docker的完美融合
【5月更文挑战第31天】 在当今软件开发的世界中,微服务架构已经成为了实现可伸缩、灵活且容错的系统的关键策略。本文将深入探讨如何从零开始构建一个高效的微服务系统,涵盖从概念理解、设计原则到具体实施步骤。我们将重点讨论微服务设计的最佳实践、常用的技术栈选择、以及如何克服常见的挑战,包括服务划分、数据一致性、服务发现和网络通信等。通过实际案例分析,本文旨在为开发者提供一套实用的指南,帮助他们构建出既健壮又易于维护的微服务系统。
|
2天前
|
Docker Python 容器
容器化技术,特别是Docker,已经成为现代软件开发和部署的重要工具。
容器化技术,特别是Docker,已经成为现代软件开发和部署的重要工具。
38 7
|
2天前
|
Kubernetes 持续交付 开发者
微软Azure云上部署Docker容器的技术实践
【7月更文挑战第15天】Docker与Azure的集成,为开发者提供了一种快速、可扩展和可维护的应用部署方式。通过在Azure平台上部署Docker容器,开发者可以充分利用Azure丰富的云服务和强大的基础设施,实现应用的快速迭代和高效运行。未来,随着Docker和Azure的不断发展和集成,我们可以期待更加便捷和高效的容器化应用部署体验。
|
25天前
|
存储 测试技术 Linux
Docker技术仓库
本文详细介绍了Docker中数据卷的作用、特点、管理方式,包括bindmounts和volumes挂载、Dockerfile中的数据卷使用、Docker仓库(公有与私有)以及DockerCompose在多容器应用中的应用。
|
6天前
|
Java 应用服务中间件 持续交付
Java面试题:简述Docker等容器化技术的原理及其在Java应用部署中的作用。
Java面试题:简述Docker等容器化技术的原理及其在Java应用部署中的作用。
14 0
|
1月前
|
运维 Ubuntu Docker
深入理解容器化技术:Docker的应用与实践
在这个数字化转型迅速推进的时代,容器化技术为软件开发和部署提供了新的路径。本文将深入探讨Docker技术的基本原理、应用场景以及实际操作,旨在帮助读者全面理解并掌握这一关键技术。
270 2
|
1月前
|
运维 Kubernetes 持续交付
Docker与Kubernetes:容器化技术的黄金搭档
【6月更文挑战第10天】Docker和Kubernetes是容器化技术的黄金组合,Docker提供轻量级、可移植的容器引擎,简化应用部署,而Kubernetes作为容器编排系统,实现自动化部署、扩展和管理,确保高可用性和可扩展性。两者的协作使得容器化应用更高效、可靠,共同推动软件开发和运维的创新。
|
20天前
|
Docker 容器
技术经验分享:Docker安装及更换源
技术经验分享:Docker安装及更换源
122 0
|
2月前
|
存储 前端开发 调度
Docker部署应用实践
Docker部署应用实践
|
2月前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于Docker和Kubernetes的实践
【5月更文挑战第30天】 在当今的快速迭代和持续部署的软件发布环境中,自动化运维的重要性愈发凸显。本文旨在探讨如何利用容器化技术与微服务架构,特别是Docker和Kubernetes,来构建一个高效、可伸缩且自愈的自动化运维体系。通过详细分析容器化的优势及Kubernetes的集群管理机制,文章将提供一个清晰的指南,帮助读者理解并实现现代软件部署的最佳实践。