首页
学习
活动
专区
圈层
工具
发布

Docker 生产环境实践1

1、以指定用户运行容器 -u username

特殊权限

--privileged=true

-net= --restart="always"

keepalived安装在宿主机

Docker生产环境实例1 几台运行着CentOS 7的Docker宿主机,使用systemd作为系统管理程 序; 一台MongoDB服务器或一个复制集合; 一台ElasticSearch服务器或一个集群。

image.png

其中systemd的写法如下:

环境变量 EnvironmentFile=/usr/etc/service-locations.env EnvironmentFile=/usr/etc/service-config.env EnvironmentFile=/usr/etc/cluster.env EnvironmentFile=/usr/etc/secrets.env EnvironmentFile=/usr/etc/%n.env

启动前旧容器被删除

ExecStartPre=-/bin/docker kill %n ExecStartPre=-/bin/docker rm -f %n

启动脚本

ExecStart=/bin/docker run

停止容器

ExecStop=-/bin/docker stop %n Restart=on-failure RestartSec=1s TimeoutStartSec=120 TimeoutStopSec=30

########环境文件的区分 service-locations.env:集群中所有服务的宿主机名。这个文件在不同集群里通常是一样,不过也有例外。 service-config.env:与服务自身相关的配置。如果不同集群运行的是服务的兼容性版本,这个文件应该是一样的。 secrets.env:密钥信息。因其内容关系,这个文件被处理的方法与其他文件不同,而且在不同集群上也有差异。 cluster.env:包括了集群间的所有不同之处,如所使用的数据库前缀、是测试还是生产环境、外部地址等。这个文件中最重要的信息是属于该集群的所有宿主机的IP地址。

cluster.env

CLUSTER_ID=alpha CLUSTER_TYPE="test" DOCKER01_IP=x.x.x.226 DOCKER02_IP=x.x.x.144 EXTERNAL_ADDRESS=https://somethingorother.com LOG_STORE_HOST=x.x.x.201 LOG_STORE_PORT=9200 MONGODB_PREFIX=alpha MONGODB_HOST_01=x.x.x.177 MONGODB_HOST_02=x.x.x.299 MONGODB_REPLICA_SET_ID=rs001

service-locations.env

SERVICE_A_HOST=docker01 SERVICE_B_HOST=docker03 CLIENTLOG_HOST=docker02 SERIVCE_D_HOST=docker01 ... SERVICE_Y_HOST=docker03 SERVICE_Z_HOST=docker01

日志与监控

日志聚合:fluentd+kibana以及docker-gen的组合。docker-gen可根据宿主机中运行的容器创建和重创建一个配置文件。docker-gen为每个运行中的容器生成一个fluentd条目,用于发送日志给kibana。这个服务运行良好,且易于调试。 监控:Datadog——一个SaaS监控服务。Datadog代理在容器中运行,用于监控各项性能指标、API使用情况和业务事件。Datadog为标签提供了丰富的支持,通过fluentd可以使用多种方式对单一事件进行标记。数据收集起来后(如跨集群的相同服务、所有Docker服务、使用某个发行版的所有API端点等),可以利用丰富的标签对数据进行多种方式的切割。

下一篇
举报
领券