docker使用问题汇总

摘要:
这意味着在转发分组时,第2层中的网桥也将被iptables的FORWARD规则过滤,这将导致L3 iptables规则过滤L2帧的问题。如果涉及一些dnat,snat将无法工作。例如,元数据服务不容易在openstack中使用。

1.解决镜像字符集问题

在dockerfile中加入以下配置

RUN yum -y install kde-l10n-Chinese && yum -y reinstall glibc-common

ENV LC_ALL zh_CN.UTF-8
ENV LANG zh_CN.UTF-8

宿主机中所有字符集安装包都在/usr/share/i18n/charmaps下,可以把中文相关的安装包docker cp到容器中

在容器里面执行下面

#查看语言支持列表
localedef --list-archive
#精简locale
cd /usr/lib/locale/
mv locale-archive locale-archive.old
localedef -i en_US -f UTF-8 en_US.UTF-8
# 添加中文支持(可选)
localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
localedef -i zh_CN -f GB2312 zh_CN
localedef -i zh_CN -f GB2312 zh_CN.GB2312
localedef -i zh_CN -f GBK zh_CN.GBK

2.解决容器时间同步宿主机

在dockerfile中加入以下配置

RUN /usr/bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

3.docker宿主机两台容器间无法通信问题

首先通过docker info查看

[root@gx-hps-01 mesos-slave]# docker info
Containers: 9
Images: 36
Server Version: 1.9.1
Storage Driver: devicemapper
Pool Name: docker-thinpool
Pool Blocksize: 524.3 kB
Base Device Size: 107.4 GB
Backing Filesystem: xfs
Data file: 
Metadata file: 
Data Space Used: 5.967 GB
Data Space Total: 510 GB
Data Space Available: 504.1 GB
Metadata Space Used: 2.4 MB
Metadata Space Total: 5.365 GB
Metadata Space Available: 5.362 GB
Udev Sync Supported: true
Deferred Removal Enabled: true
Deferred Deletion Enabled: false
Deferred Deleted Device Count: 0
Library Version: 1.02.146-RHEL7 (2018-01-22)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-862.el7.x86_64
Operating System: Red Hat Enterprise Linux Server 7.5 (Maipo)
CPUs: 64
Total Memory: 503.6 GiB
Name: gx-hps-01
ID: P6IF:SBLW:6KNA:R3DK:ZHK5:4L5V:YQDW:EE5R:RX4Q:34FR:RRGO:3LNS
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

注意上面两个告警

这个告警会导致docker宿主机两台容器间无法通信问题

1.首先用docker exec 进入到同一台宿主机的A容器

2.在容器A中telnet 宿主机IP:B容器在宿主机的映射端口,发现不通

解决办法:

查看bridge-nf-call-iptables当前值

cat /proc/sys/net/bridge/bridge-nf-call-iptables (默认为0)

修改bridge-nf-call-iptables值 (永久生效)

1. 修改 kernel参数

vi /etc/sysctl.conf

2. 加入下面三个参数,实际只要配置加粗那条就行了

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1 
net.bridge.bridge-nf-call-arptables = 1

3. 使生效內核参数立即生效

sudo sysctl -p

如果net.bridge.bridge-nf-call-iptables=1,iptables会对bridge的数据进行处理。也就意味着二层的网桥在转发包时也会被iptables的FORWARD规则所过滤,这样就会出现L3层的iptables rules去过滤L2的帧的问题。涉及一些dnat, snat就不生效了,举个例子,具体表现在openstack中就是metadata服务不好使了。

4.启动容器是报错:

Error response from daemon: Error running deviceCreate (createSnapDevice) dm_task_run failed

当你docker run -itd xxxxx /bin/bash  报以上的错误时root用户运行一下命令

# systemctl stop docker.service
# thin_check /data/hps/hps_install/data/docker/devicemapper/devicemapper/metadata
# thin_check --clear-needs-check-flag /data/hps/hps_install/data/docker/devicemapper/devicemapper/metadata
# systemctl start docker.service

免责声明:文章转载自《docker使用问题汇总》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇实践windows下 speex 1.2rc1 中的回声消除功能(转)CODING 项目协同 2.0 —— 让协作有条不紊下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

.Net Core 商城微服务项目系列(十三):搭建Log4net+ELK+Kafka日志框架

之前是使用NLog直接将日志发送到了ELK,本篇将会使用Docker搭建ELK和kafka,同时替换NLog为Log4net。 一.搭建kafka 1.拉取镜像 //下载zookeeper docker pull wurstmeister/zookeeper //下载kafka docker pull wurstmeister/kafka:2.11-...

使用docker搭建gitlab服务器

简单记录Docker的使用和GitLab的搭建 ## Docker基础篇 ### 没有sudo权限 ### 安装docker ### 基础命令 ### docker安装mysql和配置 ### Dockerfile常用命令 ### 制作镜像 ### 发布镜像 ### 容器网络 ### Docker Compose ### Swarm模式 集群## 正式搭建...

创建docker容器遇到的错误

1.问题截图   2.问题描述  出现该问题就是docker版本和系统版本不兼容导致的.   现在的系统版本和docker的版本如下:   3.问题解决   安装低版本的docker或者高版本的系统(Centos7.4以上)即可解决.   安装低版本的docker地址: https://www.cnblogs.com/jialanyu/p/1087545...

添加docker aliyun源

yum list docker-ce --showduplicates | sort -ryum install docker-ce-17.12.0.ce-1.el7.centos yum install docker-ce-19.03.5 docker-ce-cli-19.03.5 containerd.io CentOS 7(使用 yum 进行安装)...

centos6.5安装docker(亲测)

centos6.5下安装docker的过程办法 在看了网上N多复制粘贴的文章,又尝试无效后,我把我最终成功的办法发出来,希望能帮到拼命干环境的你。 操作环境: centos6.5(Final) 内核:2.6.32-431.el6.x86_64 注:官方建议docker运行在centos7 以上的系统 一、内核升级  首先uname -r 看看现在的内核版本...

(二)Java数组特性总结,你真的了解数组吗?

一、数组的特殊性 (一)数组标识符是一个引用,指向堆中创建的一个真实对象,这个对象(数组)保存了指向保存其他对象的引用。 (二)数组中保存引用类型时保存的是对象引用,基本数据类型数组保存基本数据的值。 (三)数组的length只表示数组能够容纳多少元素,不能保存实际保存的元素个数。 (四)多维数组可以使用Arrays.deepToString()将多维数组...