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&& \
目录
相关文章
|
1月前
|
SQL 数据库 Docker
OBCP实践 - OceanBase Docker 体验
开发者和技术爱好者可以在无需复杂安装配置的情况下迅速搭建OceanBase数据库环境,从而方便地进行功能测试、性能评估或者开发调试等实践活动。同时,由于Docker的便捷性,此方法也支持跨平台部署,使得OceanBase数据库能够在不同的操作系统(如Linux、Windows、macOS)上轻松体验。
79 2
|
1月前
|
Java Go 开发者
Docker容器技术简介及其与Go语言的结合点
【2月更文挑战第23天】本文首先概述了Docker容器技术的核心概念和优势,接着探讨了Go语言与Docker容器技术的结合点。通过阐述Docker的轻量级、可移植性和版本控制等特性,以及Go语言在容器化应用中的优势,本文旨在说明两者结合能够实现更高效、灵活的应用开发和部署。
|
2月前
|
运维 云计算 Docker
深入理解与实践:基于Docker的微服务架构优化策略
本文旨在为软件开发和运维人员提供一个全面的指南,探讨如何通过Docker容器技术优化微服务架构。我们不仅深入分析了Docker在微服务环境中的关键作用,还提出了一系列实践策略,以提高部署效率、增强系统稳定性,并确保服务的可伸缩性和安全性。通过具体案例分析和比较传统部署方式的局限性,本文展示了Docker如何成为微服务架构优化不可或缺的工具,旨在帮助读者构建一个更加灵活、高效和可靠的服务环境。
149 1
|
1天前
|
弹性计算 测试技术 持续交付
Docker技术这些应用场景,你知道吗?
Docker技术这些应用场景,你知道吗?
|
1月前
|
Kubernetes Go 开发者
Go语言与Docker容器结合的实践应用与案例分析
【2月更文挑战第23天】本文通过分析实际案例,探讨了Go语言与Docker容器技术结合的实践应用。通过详细阐述Go语言在容器化环境中的开发优势,以及Docker容器技术在Go应用部署中的重要作用,本文旨在为读者提供Go语言与Docker容器结合的具体实现方法和实际应用场景。
|
1月前
|
Kubernetes 云计算 开发者
云计算中的容器化技术:Docker与Kubernetes的实践
云计算中的容器化技术:Docker与Kubernetes的实践
105 0
|
2月前
|
运维 Java Linux
深入解析:使用Docker容器化技术提升Java应用的部署效率
在快速迭代的软件开发周期中,如何保证应用的快速、一致和可靠部署成为了开发团队需要面对的重大挑战。本文将探讨如何利用Docker容器化技术,结合Java应用,实现高效、一致的部署流程。我们将从Docker的基本概念出发,详细介绍将Java应用容器化的步骤,包括创建Dockerfile、构建镜像以及运行容器等关键环节,并通过示例代码加以说明。此外,本文还将讨论在使用Docker部署Java应用时可能遇到的常见问题及其解决策略,旨在为读者提供一种提升部署效率、优化开发流程的有效方法。
303 2
|
2月前
|
虚拟化 开发者 Docker
深入浅出:利用Docker容器化技术加速Web开发流程
在本篇文章中,我们将探讨Docker容器化技术如何为Web开发带来革命性的效率提升。通过具体案例和实操示范,我们不仅会介绍Docker的基本概念和工作原理,还将深入分析如何利用Docker容器化技术简化开发环境的搭建、提高应用的可移植性以及加快部署速度。本文旨在为读者提供一种全新的视角,理解并实践如何通过Docker优化现代Web开发流程,无论是对于个人开发者还是团队项目,都将带来前所未有的便捷和效率。
29 0
|
2月前
|
负载均衡 开发者 Docker
深入浅出:利用Docker容器化技术提升Web开发效率
在快速变化的软件开发领域,开发者面临着环境一致性和项目部署效率的双重挑战。Docker作为一种先进的容器化技术,为解决这些问题提供了优雅的解决方案。本文将探讨Docker的核心概念、优势以及如何在Web开发中应用Docker来提升开发和部署的效率。通过实际案例分析,读者将了解到如何构建、分享和运行Docker容器,以确保开发环境的一致性,并加速Web应用的交付过程。
|
3月前
|
Linux Docker Python
Python实战技术 - Python虚拟隔离环境 和 Docker技术
Python实战技术 - Python虚拟隔离环境 和 Docker技术
204 0