常见问题 ############ 环境变量问题 ============ 设置环境变量要用 ENV:: ENV JAVA_HOME /usr/local/jdk1.8.0_171 ENV PATH $JAVA_HOME/bin:$PATH 用 echo "JAVA_HOME /usr/local/jdk1.8.0_171" >> /etc/profile 就出错 Docker.raw占用过多的磁盘空间 =============================== :: $ cd ~/Library/Containers/com.docker.docker/Data/vms/0 $ zhaoweiguo$ ls -lh Docker.raw -rw-r--r--@ 1 zhaoweiguo staff 15G Jun 25 13:56 Docker.raw // 使用ls命令占用15G,而使用du命令占用只有3.6G $ du -hs Docker.raw 3.6G Docker.raw 原因:: // ls默认列出的是逻辑大小而不是物理大小, 物理大小要使用-ks $ zhaoweiguo$ ls -lhks Docker.raw 3728116 -rw-r--r--@ 1 zhaoweiguo staff 15G Jun 25 13:56 Docker.raw 此例中,逻辑大小是15G,物理大小是3.6G 证书问题 ============ 问题:: Get https://zhaoweiguo.com/auth: x509: certificate signed by unknown authority panic: Get https://zhaoweiguo.com/auth: x509: certificate signed by unknown authority 解决:: alpine镜像, 增加一条语句: RUN apk add --no-cache ca-certificates 挂载的目录没有权限 ================== 问题:: $host> docker run -v /tmp/zwg:/data --name xinxi alpine $host> docker exec -it xinxi /bin/bash $docker> touch /data/abc cannot touch /data/abc: Permission denied 原因:: centos7中安全模块selinux把权限禁掉了 解决方案:: 1. 在运行时加 --privileged=true 2. 临时关闭selinux然后再打开 $> setenforce 0 // 关闭 ... $> setenforce 1 // 再打开 3. 添加linux规则,把要挂载的目录添加到selinux白名单 chcon [-R] [-t type] [-u user] [-r role] 文件或者目录 选顷不参数: -R :该目录下的所有目录也同时修改; -t :后面接安全性本文的类型字段,例如 httpd_sys_content_t ; -u :后面接身份识别,例如 system_u; -r :后面街觇色,例如 system_r 实例: chcon -Rt svirt_sandbox_file_t /tmp Networking will not work ======================== 问题:: ---> [Warning] IPv4 forwarding is disabled. Networking will not work. ---> Running in 10ad6724b3b8 原因:: 容器要想访问外部网络,需要本地系统的转发支持 定位:: 在Linux 系统中,检查转发是否打开: $sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 0 # 如果为0说明没有开启转发 解决:: 方法1(手动打开): $sysctl -w net.ipv4.ip_forward=1 方法2(启动时指定): 如果在启动 Docker 服务的时候设定 --ip-forward=true, Docker 就会自动设定系统的 ip_forward 参数为 1