在生产环境使用 Docker

时间:2022-04-29
本文章向大家介绍在生产环境使用 Docker,主要内容包括配置 Docker、自动启动容器、限制容器资源、CPU、清除无用数据、Keep containers alive during daemon downtime、systemd、使用本地私有 Docker 仓库、容器日志、安全、Swarm mode、存储敏感数据、在一个容器中运行多个服务、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

本文是对官方文档的总结与备注。

官方文档: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/