Docker 实践遇到的问题(持续更新)
本文列举了使用 Docker 过程中遇到的问题。
时区
基于 Debian
的镜像通过设置 环境变量
改变时区,在 Dockerfile 中增加 ENV
或在启动容器时指定 $ docker run -e TZ=Asia/Shanghai ...
。
ENV TZ=Asia/Shanghai
基于 Alpine
的镜像先安装 tzdate
,再设置环境变量
RUN apk add --no-cache tzdata
ENV TZ=Asia/Shanghai
交叉运行
https://github.com/justincormack/cross-docker
x86_64
架构运行其他架构( armhf 等)容器,原理是运用 QEMU
。
macOS 不用以上脚本,实际测试中与树莓派对比,性能较差,毕竟是虚拟机。
网络
macOS
macOS 不能 ping 通容器(Linux docker0 默认为 172.17.0.1),所以容器想要 ping 主机,必须填写路由器分配给主机的 IP(192.168.199.100,而不是 172.17.0.1)。
DNS、host
不能在文件中写入配置,写入也不生效。在 daemon.json
中可以配置 DNS
, 设置 hosts
请通过 docker build
、docker run
时的命令参数进行设置。
使用 Docker Compose
本博客系列文章运行容器方式由 docker run
转变为 docker-compose
。
必须使用 .env.example
文件来定义变量。使用时将 .env.example
复制为 .env
文件。
规范
一个容器,一个服务
比如不要在一个容器中安装 LNMP,可以使用 Docker Compose 分配到 3 个容器,集中启动、管理。
一个容器运行多个服务:https://docs.docker.com/engine/admin/multi-service_container/
命令
使用 docker image
管理镜像 代替 docker images
使用 docker container
管理容器 代替 docker ps
使用 docker volume
管理数据卷
使用 docker network
管理容器网络
数据管理
详细内容请查看 Docker 数据管理
开发环境
Use bind mounts
to give your container access to your source code
生产环境
Use volumes
to store container data.
不赞成使用
容器互联
反对 --link
,请使用自定义的 Docker 网络来连接多个容器
数据管理
反对 -v
或 --volume
,请使用 --mount
废弃功能
https://docs.docker.com/engine/deprecated/
More Information
- NLP之tfidf与textrank算法细节对比基于结巴分词
- 【Go 语言社区】算法课程 第一季 第4节-汉诺塔
- C/C++——map的基本操作总结
- Python生成词云图,TIIDF方法文本挖掘: 词频统计,词云图
- C/C++——vector的基本操作总结
- 数据库负载急剧提高的应急处理(二) (r9笔记第55天)
- 社团划分——有向图的Label Propagation算法
- Python基础——网络编程
- 分区表的一个持续改进方案(r9笔记第53天)
- python jieba分词(结巴分词)、提取词,加载词,修改词频,定义词库
- MySQL中的NULL和空串比较 (r9笔记第52天)
- Core-periphery decomposition--核心-外围模型R代码整理
- 停止数据库没有响应的问题分析(r9笔记第51天)
- Hive——巧用transform处理复杂的字符串问题
- 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 数组属性和方法
- Linux中特殊权限SUID、SGID与SBIT的深入讲解
- linux新文件权限设置之umask的深入理解
- 在 CentOS 8/RHEL 8 上安装和使用 Cockpit的方法
- Linux删除文件提示Operation not permitted的处理办法
- 微任务与宏任务
- Linux 文件权限的详细介绍
- Linux统计一个文件中特定字符个数的方法
- CentOS7 安装 zabbix 4.0 教程(图文详解)
- 浅谈简单使用CentOS7防火墙及开放端口
- Linux后台运行Python程序的几种方法讲解
- tr命令在统计英文单词出现频率中的妙用
- 浅析CentOS8虚拟机访问Windows10主机文件夹方法
- CentOS 7 安装 Jenkins过程详解
- ubuntu15.10下hadoop2.7.2的安装与配置详解
- linux服务器被植入ddgs、qW3xT.2挖矿病毒的处理实战记录