Docker-3 尝试Docker 应用栈
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker-3 尝试Docker 应用栈相关的知识,希望对你有一定的参考价值。
Note :
1) Docker 的设计理念: 一个Container 只运行 一个 进程 ,即 : 只提供一种服务
2) 一般对于一个应用而言,单一的容器,是无法满足要求, 通常需要 多个容器,分别 提供不同的服务,并在 不同的容器间进行 通信 , 这就形成了 docker 集群
基于 docker 集群构建的 应用 ,称之为 docker app stacj
ENV : django + redis+ haproxy + ubuntu , 【 A web application 】
step 1: pull images
#docker pull django
#docker pull redis
#docker pull ubuntu
#docker pull haproxy
// check images
#docker images
step 2: links : 建立 容器间的 互联关系
#docker run --name console ---link redis:redis ubuntu bash
step 3 : start
Note : 一定 要理清 容器的 启动顺序
这里是 redis-master --> redis-slave --> App [ django ] --> HAProxy
#docker run -it --name redis-maser redis /bin/bash
#docker run -it --name redis-slave1 --link redis-master:master redis /bin/bash
//--link redis-master:master 需要使用 redis-master 容器,并将之 重命名为 maste
#docker run -it --name redis-slave2 --link redis-master:master redis /bin/bash
#sudo docker run -it --name App1 --link redis-master:db -v ~/projects/app1:/usr/src/app django /bin/bash
#sudo docker run -it --name App2 --link redis-master:db -v ~/projects/app2:/usr/src/app django /bin/bash
#docker ps
step 4 :config redis && django
1) redis master
#valum_redis_master=`sudo docker inspect --format "{{.Volumes}}" redis_id`
#cd $valum_redis_master
#vi redis.cong
daemonize yes
pidfile /var/run/redis.pid
#cd /data
#cp redis.conf /usr/local/bin
#cd /usr/local/bin
#redis-server redis.conf
2) redis client
#valum_redis_master=`sudo docker inspect --format "{{.Volumes}}" redis_id`
#cd $valum_redis_master
#vi redis.cong
daemonize yes
pidfile /var/run/redis.pid
slaveof master 6379
#cd /data
#cp redis.conf /usr/local/bin
#cd /usr/local/bin
#redis-server redis.conf
3) db test
#redis-cli
set && get ; if can get , Done ; else Check
总结:
开发环境:
docker 提供的 虚拟化方式, 可以快速的建立起 一套 可复用的 开发环境, 以镜像的 形式,将 开发环境,分发给 开发人员,可以省去 搭建开发环境
测试环境:
可以直接 使用,开发者所构建的镜像进行测试,直接免除了测试环境构建 和 因为 环境不一致所带来的 漏洞问题
正式环境:
可以 利用 docker 进行容器 级别的部署, 把 应用及其依赖环境 打包成,跨平台,轻量级,可一直的容器 ,进行部署
docker 是以 镜像和 镜像 基础 上 构建的容器为 基础, 以容器为开发 , 将与 应用相关的 所有组件 和 环境 进行封装, 避免了在 不同平台间 ,迁移时带来的依赖性问题
以上是关于Docker-3 尝试Docker 应用栈的主要内容,如果未能解决你的问题,请参考以下文章
将 NodeJS Docker 容器连接到 MySQL Docker 容器 - docker-compose 3
无法在 docker-compose 中使用 Postgres DB - ECONNREFUSED
docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用