• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > Docker搭建简单的应用栈与容器Hello World访问详解

Docker搭建简单的应用栈与容器Hello World访问详解

作者:Jackson_csdn 字体:[增加 减小] 来源:互联网

本文主要包含Docker,搭建,应用栈,容器,Hello,World访问等服务器相关知识,Jackson_csdn 希望可以进行参考

本文实例讲述了Docker搭建简单的应用栈与容器Hello World访问。分享给大家供大家参考,具体如下:

这里参考《Docker容器和容器云》 2.3.2章节应用栈搭建过程,对原书中出现的问题 -镜像不断的更新导致- 做了修改,特此说明。

系统环境

操作系统版本

$ cat /etc/issue
Debian GNU/Linux 8 \n \l

内核版本

$ uname -r
3.16.0-4-amd64

Docker版本

 docker version
Client:
 Version:   1.12.1
 API version: 1.24
 Go version:  go1.6.3
 Git commit:  23cf638
 Built:    Thu Aug 18 05:02:53 2016
 OS/Arch:   linux/amd64

Server:
 Version:   1.12.1
 API version: 1.24
 Go version:  go1.6.3
 Git commit:  23cf638
 Built:    Thu Aug 18 05:02:53 2016
 OS/Arch:   linux/amd64

应用栈搭建

我们将搭建一个包含6个节点的Docker应用栈,其中包括一个代理节点、两个Web应用节点、一个主数据库节点及两个从数据库节点。应用栈的具体结构如图所示:

获取应用栈节点所需的镜像

根据应用栈结构,需要从Docker Hub获取HAProxy、Redis和Django的镜像:

# docker pull ubuntu:14.04
# docker pull haproxy
# docker pull redis
# docker pull django
# docker images
REPOSITORY     TAG         IMAGE ID      CREATED       SIZE
haproxy       latest       65599e2ea3f2    2 weeks ago     139.1 MB
redis        latest       0d1cbfaa41da    2 weeks ago     185 MB
ubuntu       14.04        4a725d3b3b1c    3 weeks ago     188 MB
django       latest       79d802ec2b6c    4 weeks ago     437.4 MB

应用栈容器节点互联

docker run --link redis:redis --name console ubuntu bash

此处将在Ubuntu镜像上启动一个容器,并命名为console,同时将新启动的console容器连接到名为redis的容器上。docker run 命令的 --link选项用于添加连接到一个容器。这里还使用了 --name选项为容器指定名称。

关于Docker link用法可参考本站《Docker如何使用link建立容器之间的连接》

应用栈节点启动

启动应用栈节点之前先整理应用栈节点的连接过程:

  • 启动redis-master容器节点;
  • 两个redis-slave容器节点启动时连接到redis-master;
  • 两个APP容器节点启动时连接到redis-master;
  • HAProxy容器节点启动时连接到两个APP节点。

此外,为了能够从外网访问应用栈,并通过HAproxy节点访问应用栈中的APP,在启动HAProxy节点时使用-p参数将端口暴露给主机。

综上,容器启动顺序为:

redis-master -》redis slave -》APP -》HAProxy

启动Redis容器

# docker run -it --name redis-master redis /bin/bash
# docker run -it --name redis-slave1 --link redis-master:master redis /bin/bash
# docker run -it --name redis-slave2 --link redis-master:master redis /bin/bash

启动Django容器

# docker run -it --name APP1 --link redis-master:db -v ~/Projects/Django/APP1:/usr/src/app django /bin/bash
# docker run -it --name APP2 --link redis-master:db -v ~/Projects/Django/APP2:/usr/src/app django /bin/bash

启动HAproxy容器

# docker run -it --name HAProxy --link APP1:APP1 --link APP2:APP2 -p 6301:6301 -v ~/Projects/HAProxy:tmp haproxy /bin/bash

说明:启动每个容器时都需分配一个终端。

容器启动信息查看:

# docker ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES
ab25650701f0    haproxy       "/docker-entrypoint.s"  3 hours ago     Up 3 hours     0.0.0.0:6301->6301/tcp  HAProxy
ace790044e06    django       "/bin/bash"       3 hours ago     Up 3 hours                  APP2
64963af16131    django       "/bin/bash"       3 hours ago     Up 3 hours                  APP1
aa77330aee2a    redis        "docker-entrypoint.sh"  3 hours ago     Up 3 hours     6379/tcp         redis-slave2
1fd72289d4f2    redis        "docker-entrypoint.sh"  3 hours ago     Up 3 hours     6379/tcp         redis-slave1
518b41200dab    redis        "docker-entrypoint.sh"  3 hours ago     Up 3 hours     6379/tcp         redis-master

应用栈容器节点配置

Redis Master主数据库容器节点配置

我们知道通过volume可以在宿主机和容器之间共享数据,因此可在宿主机上创建和编辑Redis的启动配置文件。使用docker inpect命令查看volume挂载情况:

# docker inspect -f '{{ .Mounts }}' redis-master
[{5920a23b5e230a449230bbd4807912793bbc3bab0a05ae085ff95423301f0d6c /var/lib/docker/volumes/5920a23b5e230a449230bbd4807912793bbc3bab0a05ae085ff95423301f0d6c/_data /data local true }]

可以看出,redis-master的volume在宿主机上为目录/var/lib/docker/volumes/5920a23b5e230a449230bbd4807912793bbc3bab0a05ae085ff95423301f0d6c/_data,在容器中为/data。

执行如下命令创建Redis的启动配置文件redis.conf:

# cd /var/lib/docker/volumes/5920a23b5e230a449230bbd4807912793bbc3bab0a05ae085ff95423301f0d6c/_data
# cp /~/redis.conf .
# vim redis.conf

对于redis主数据库,修改如下模板文件中的几个参数:

daemonize yes
pidfile /var/run/redis.pid

redis.conf模板下载:https://github.com/yhsong-linux/docker-redis/blob/master/redis.conf

在宿主机上创建好启动配置文件后,切换到容器中的/data目录,将redis.conf拷贝到执行工作目录,然后启动redis服务:

# cd /data
# cp redis.conf /usr/local/bin
# cd /usr/local/bin
# redis-server redis.conf

Redis Slave从数据库容器节点配置

与Redis Master容器节点类似,在启动Redis Slave容器节点之后,需要查看vloume信息,并创建启动配置文件。

对于Redis从数据库,需要修改如下几个参数:

daemonize yes
pidfile /var/run/redis.pid
slaveof master 6379

在宿主机上创建好启动配置文件后,切换到容器中的/data目录,将redis.conf拷贝到执行工作目录,然后启动redis服务:

# cd /data
# cp redis.conf /usr/local/bin
# cd /usr/local/bin
# redis-server redis.conf

Redis数据库容器节点测试

在Redis Master和Redis Slave容器节点的配置和服务启动后,可以通过启动Redis的客户端程序来测试数据库。

首先,在Redis Master容器内,启动Redis的客户端程,并存储一个数据:

# redis-cli
127.0.0.1:6379> set master 518b
OK
127.0.0.1:6379> get master
"518b"

接着,在两个Redis Slave容器内,分别启动Redis的客户端程,查询之前在Master数据库中存储的数据:

# redis-cli
127.0.0.1:6379> get master
"518b"

根据响应可知,Master数据库中的数据已经同步到Slave数据库中。至此,应用栈的数据库部分搭建完成。

APP容器节点(Django)的配置

Django容器启动后,需要利用Django框架,开发一个简单的Web程序。为了访问数据库,需要在容器中安装Python的Redis支持包:

# pip install redis

安装完成后,验证支持包是否安装成功:

# python
Python 3.4.5 (default, Aug 22 2016, 20:55:07)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import redis
>>> print(redis.__file__)
/usr/local/lib/python3.4/site-packages/redis/__init__.py

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Docker实践8:Compose,docker实践compose
  • Docker buildx构建多平台镜像并推送到私有仓库的方法
  • Docker三个基本概念镜像(Image)容器(Container)仓库(Repository)
  • 什么是Docker?为什么要使用Docker
  • docker 开源的应用容器引擎
  • 如何给docker设置http代理
  • docker官方mysql镜像自定义配置详解
  • 详解Docker数据管理(数据卷&数据卷容器)
  • 如何利用Docker容器实现代理转发与数据备份详解
  • 详解Docker Swarm 在持续集成测试中的应用

相关文章

  • Docker镜像构建的两种方法解析
  • Docker 数据卷及数据容器详细介绍及示例
  • VMware下Ubuntu 14.04静态IP地址的设置方法
  • CentOS7.2部署OpenStack(一)—环境准备
  • 在Ubuntu中安装Docker教程
  • Docker 基础之Dockerfile命令详解
  • 在Docker容器中使用iptables时的最小权限的开启方法
  • Docker下Tomcat容器中使用Mysql的方法
  • Docker到底是什么?Docker为什么它这么火!
  • Vmware虚拟机下网络模式配置详解

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Docker镜像创建的方法
    • 【甘道夫】Apache Hadoop 2.5.0-cdh5.2.0 HDFS Quotas 配额控制,hadoophdfs
    • 浅谈Docker运行Tensorboard和jupyter的方法
    • Vmware虚拟机下网络模式配置详解
    • VMware Workstation 12安装与激活图文教程
    • Linux下Docker安装和使用教程
    • docker kubernetes dashboard安装部署详细介绍
    • 在VMWare下LINUX中安装VMTool及共享文件夹
    • 详解Docker学习笔记之搭建一个JAVA Tomcat运行环境
    • VMware虚拟机系统无法使用桥接联网的解决方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有