当项目需要使用Docker,对Dockerfile、配置加速器以及配置加速器的实际运用

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 当项目需要使用Docker,对Dockerfile、配置加速器以及配置加速器的实际运用

Dockerfile

因为Docker在C/S中运行。我们的本机是C,Docker引擎是S。实际的构建过程是在Docker引擎下完成的,因此此时无法使用本地文件。这需要将本地机器指定目录中的文件打包并提供给Docker引擎使用。
如果未指定最后一个参数,则默认上下文路径为Dockerfile的位置。
注意:不要将无用的文件放在上下文路径中,因为它们将被打包并发送到docker引擎。如果文件太多,进程将很慢。

COPY [--chown=<user>:<group>] <源路径1>...  <目标路径>
COPY [--chown=<user>:<group>] ["<源路径1>",...  "<目标路径>"]

Dockerfile是一个用于构建图像的文本文件。文本内容包含构建图像所需的说明和说明。
使用Dockerfile自定义图像
这里我只解释如何运行Dockerfile文件来定制图像。Dockerfile文件中的具体说明将在下一节中解释。在这里,您只需要了解施工过程。
1.接下来,定制一个nginx映像(构建的映像中会有一个/usr/share/nginx/html/index.html文件)
在空目录中,创建一个名为Dockerfile的新文件,并将以下内容添加到该文件中:

FROM centos
RUN yum -y install wget \
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
    && tar -xvf redis.tar.gz

添加
ADD指令的用例与COPY指令的用例相似(在相同的要求下,正式推荐COPY指令)。功能相似,但有以下区别:
ADD的优点:当<源文件>是tar压缩文件,并且压缩格式为gzip、bzip2和xz时,它将被自动复制并解压缩到<目标路径>。
ADD的缺点是:如果不解压tar压缩文件,就不可能复制它。映像生成缓存将无效,这可能会使映像生成变慢。是否使用它取决于是否自动解压缩。
命令

CMD <shell 命令> 
CMD ["<可执行文件或命令>","<param1>","<param2>",...] 
CMD ["<param1>","<param2>",...]  # 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数

与RUN指令类似,它用于运行程序,但两者在不同的时间点运行:
CMD在docker运行时运行。
RUN在Docker Build中。
函数:为启动的容器指定默认运行的程序。当程序运行时,容器结束。CMD指令中指定的程序可以被docker运行命令行参数中指定的要运行的程序覆盖。
注意:如果Dockerfile中有多条CMD指令,则只有最后一条指令生效。

集群管理

$ docker-machine create -d virtualbox swarm-manager

Docker Swarm是Docker的集群管理工具。它将Docker主机池转换为单个虚拟Docker主机。Docker Swarm提供了一个标准的Docker API。所有与Docker守护程序通信的工具都可以使用Swarm轻松扩展到多个主机。
支持的工具包括但不限于:

Dokku公司
Docker合成
Docker机器
詹金斯
道德原则

群集由管理节点和工作节点组成。
Swarm manager:负责整个集群的管理,包括集群配置、服务管理和其他与集群相关的工作。
工作节点:指图中可用的节点,主要负责运行相应的服务来执行任务。
在这里插入图片描述
Compose文件定义了两个服务:web和redis。
Web:此Web服务使用从Dockerfile当前目录构建的图像。然后将容器和主机绑定到暴露的端口5000。此示例服务使用Flask Web服务器的默认端口5000。
Redis:此Redis服务使用Docker Hub的公共Redis映像。

docker@swarm-manager:~$ docker service inspect --pretty helloworld

上下文:上下文路径。
Dockerfile:指定图像的Dockerfile文件名。
Args:添加一个构建参数,它是一个环境变量,只能在构建过程中访问。
标签:设置构造图像的标签。
目标:多层结构,可以指定哪个层。

在这里插入图片描述

配置加速器

在检查加速器是否有效并配置加速器后,如果图像拉动仍然非常缓慢,请手动检查加速器配置是否有效。在命令行上执行docker信息。如果从结果中看到以下内容,则配置成功。

$ docker info
Registry Mirrors:
   

某些网络应用程序可以在容器中运行。为了允许外部用户访问这些应用程序,可以通过-P或-P参数指定端口映射。
让我们通过港口连接到码头集装箱。

runoob@runoob:~$ docker ps
CONTAINER ID        IMAGE               COMMAND           ...           PORTS                     NAMES
33e4523d30aa        training/webapp     "python app.py"   ...   0.0.0.0:5000->5000/tcp    berserk_bartik
fce072cc88ce        training/webapp     "python app.py"   ...   0.0.0.0:32768->5000/tcp   grave_hopper

端口映射不是将Docker连接到另一个容器的唯一方法。
Docker有一个连接系统,允许多个容器连接在一起,共享连接信息。
Docker连接将创建父子关系,父容器可以在其中看到子容器的信息。

$ docker network create -d bridge test-net
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
运维 网络安全 持续交付
IDEA+Docker 远程一键部署项目:技术干货分享
【10月更文挑战第4天】在现代软件开发中,快速、可靠、自动化的部署流程是提升开发效率和运维质量的关键。IDEA(IntelliJ IDEA)作为Java开发者首选的IDE,结合Docker这一轻量级容器化技术,能够实现远程一键部署项目,极大地简化了开发到生产的流程。今天,我将和大家分享这一组合在工作学习中的实际应用和技术干货。
219 3
|
12天前
|
应用服务中间件 PHP nginx
Docker-compose 编排lnmp(dockerfile) 完成Wordpress
通过使用Docker Compose,我们可以轻松编排LNMP环境并部署WordPress。本文详细介绍了各组件的Dockerfile和配置文件编写,并通过docker-compose.yml文件实现了整个环境的自动化部署。这种方法不仅简化了部署过程,还提高了环境的可移植性和一致性。希望本文能帮助你更好地理解和使用Docker Compose来管理和部署复杂的应用程序。
38 3
|
24天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
199 3
|
28天前
|
Docker 容器
docker中使用Dockerfile自动创建数据卷
【10月更文挑战第12天】
19 5
|
1月前
|
Java jenkins 持续交付
Centos7下docker的jenkins下载并配置jdk与maven
通过上述步骤,您将成功在CentOS 7上的Docker容器中部署了Jenkins,并配置好了JDK与Maven,为持续集成和自动化构建打下了坚实基础。
99 1
|
1月前
|
网络协议 Docker 容器
docker中的DNS配置
【10月更文挑战第5天】
265 1
|
1月前
|
消息中间件 NoSQL Kafka
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
38 4
|
1月前
|
存储 Ubuntu JavaScript
如何使用Docker优化你的开发环境配置
如何使用Docker优化你的开发环境配置
|
1月前
|
Docker 容器
利用Docker Compose优化开发环境的配置
在现代软件开发中,环境一致性至关重要。开发人员常需在不同机器间复制环境配置,而Docker Compose提供了一种简便有效的方法来定义和运行多容器Docker应用程序,确保开发、测试和生产环境一致,简化团队协作,提高开发效率。通过YAML文件配置服务、网络和卷,使用简单命令即可启动和停止服务。本文将介绍Docker Compose的核心优势、基本使用方法及高级功能,帮助你更好地管理和优化开发环境。
|
1月前
|
Docker 容器
如何利用docker来部署war包项目
本文介绍了如何使用Docker来部署WAR包项目,包括编写Dockerfile和docker-compose.yml文件,以及如何通过Docker Compose启动服务。
34 0