在生产环境使用 Docker
本文是对官方文档的总结与备注。
官方文档:https://docs.docker.com/engine/userguide/
配置 Docker
手动启动 Docker
这一部分内容详情可以查看:https://www.khs1994.com/docker/dockerd.html
$ sudo docked
自动启动容器
https://docs.docker.com/engine/admin/start-containers-automatically/
$ docker run --restart no | on-failure | unless-stopped | always
限制容器资源
https://docs.docker.com/engine/admin/resource_constraints/
内存
-m
或 --memory=4m
--memory-swap
--memory-swappiness
--memory-reservation
--kernel-memory
--oom-kill-disable
CPU
--cpus
--cpu-period
--cpu-quota
--cpuset-cpus
--cpu-shares
清除无用数据
https://docs.docker.com/engine/admin/pruning/
https://www.khs1994.com/docker/prune.html
Keep containers alive during daemon downtime
https://docs.docker.com/engine/admin/live-restore/
systemd
https://docs.docker.com/engine/admin/systemd/
使用本地私有 Docker 仓库
https://www.khs1994.com/docker/registry.html
容器日志
https://docs.docker.com/engine/admin/logging/view_container_logs/
$ docker logs CONTAINER_NAME
$ docker service logs SERVICE_NAME
日志驱动
安全
https://docs.docker.com/engine/security/security/
Swarm mode
存储配置数据
https://docs.docker.com/engine/swarm/configs/
docker config
命令
以 redis
为例
$ echo "This is a config" | docker config create my-config -
# 配置文件默认挂载到 /my-config ,也可以通过 target 进行配置
$ docker service create
--name redis
# --config my-config
--config source=my-config,target=/config/path
redis:alpine
$ docker config ls
# 当配置文件被使用时,不能删除
$ docker config rm my-config
存储敏感数据
https://docs.docker.com/engine/swarm/secrets/
docker secret
命令
以 nginx
为例
$ docker secret create site.key site.key
$ docker secret create site.crt site.crt
$ docker secret create site.conf site.conf
$ docker secret ls
# 默认挂载到 /run/secrets/*** ,你可以通过 target 配置
$ docker service create
--name nginx
--secret site.key
--secret site.crt
--secret source=site.conf,target=/etc/nginx/conf.d/site.conf
--publish target=3000,port=443
nginx:latest
sh -c "exec nginx -g 'daemon off;'"
在一个容器中运行多个服务
https://docs.docker.com/engine/admin/multi-service_container/
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 面试:mysql 事务和锁的解释
- 【STM32F407开发板用户手册】第35章 STM32F407的FSMC总线应用之驱动AD7606(8通道同步采样, 16bit, 正负10V)
- 玩转easyARM imax283A开发版(二),移植NES模拟器并增加按键驱动,让板子可以玩超级玛丽游戏
- 完了!TCP出了大事!
- redis高并发高可用
- 嵌入式linux之go语言开发(九)关于嵌入式GUI
- docker入门总结,从使用的角度谈起
- 使用 Go 语言开发 Android 应用的正确姿势探索
- Android的配置文件操作的完美封装(使用注解 反射让配置文件操作如此清晰和简单)
- Android中protobuf的使用
- 疫情监控三部曲——在STM32F103 MCU上实现(裸机版)
- Android配置文件操作模块封装,全互联网最简单好用的封装
- 使用logcat让Android应用支持查看实时日志并输出至界面显示功能
- 如何处理redis集群的hot key和big key
- 嵌入式linux之go语言开发(十一)让web服务器跑在终端上,通过网页配置终端参数