1. 概述

    1. 最近学习 docker 遇到的 坑

1. dockerfile: 安装命令

  1. 概述

    1. 安装命令
    1. 选项参数里, 一定要 带 -y

      1. 不带的话, 基本会阻塞构建

2. 其他: 处理问题, 一定不能慌

  1. 概述

    1. 不要慌
  2. 认识

    1. 出现问题是常态, 不要慌
    2. 有日志先看日志
    3. 没日志再去网上找
    4. 尽量记得自己操作的步骤
      1. 控制变量

3. docker network: hosts 文件

  1. 概述

    1. 加入 docker network 的容器, hosts 文件不会有其他容器
  2. 场景

    1. docker 容器加入 docker network
  3. 看了两本书

    1. 书上都说

      1. hosts 文件里会加入别的容器
      2. 容器之间, 可以通过 主机名 ping 通
      1. 第一本 docker 书(修订版)
      2. docker 容器与容器云
  4. 结果

    1. 我没有发现 host 文件
    2. 当时使用的镜像里没有 ping 命令
  5. 我的处理

    1. 重建容器, 验证 hosts
    2. 调整命令, 验证 hosts
    3. 切换 busybox 进行, 验证 hosts
    4. 在 busybox 下, ping
      1. 卧槽, 居然是通的
      2. hosts 里没有, 也可以通
    5. 给 容器装上 ping, 发现也能通...
      1. 后来发现, 原来是其他的问题
  6. 总结

    1. 如果遇上某些 网络环境的问题, 可以先用 busybox 这类小镜像调试

4. redis: 关闭 protected 模式

  1. 概述

    1. 尝试关闭 redis 的 protected 模式
  2. 场景

    1. 使用 app 连接 redis 时, 提示异常

      1. 仔细看, 是 protected 模式

        1. 没有账号密码
        2. 只能 localhost 连
      2. 处理
        1. 思路1

          1. 关闭 protected 模式
        2. 思路2
          1. 添加 bind 地址
  3. 我的处理

    1. 最开始没看 异常

      1. 以为网断了, 所以搞了半天
    2. 看了异常
      1. 异常写得很清楚
    3. 尝试修改配置
      1. 进入 redis-cli 连接

        1. 修改 protected 模式属性 CONFIG SET protected-mode no
        2. 结果没成功
    4. 重启 redis, 添加命令行选项
      1. --protected-mode no
      2. 结果成功
  4. 总结

    1. 好好看异常提示

5. jenkins: workspace

  1. 概述

    1. jenkins 工作目录的路径
  2. 场景

    1. 设置 自定义workspace
    2. 配合 git
  3. freestyle

    1. git 的工程代码, 直接下载到 workspace 里

      1. 工程的名字目录直接没了
      2. 比如, 工程叫 demo, 下下来后, demo 目录直接没了, 内容在 workspace 里
  4. 多配置项目

    1. 我草这个东西真的有点麻烦

      1. 指定 axis 维度选项
      2. jenkins 会自建目录
        1. 场景

          1. aixs

            1. OS ubuntu
          2. 目录

            # workspace 是 /tmp/jenkins-buildenv/Docker_matrix_job/workspace
            # 其中规则, 你们感受一下...
            /tmp/jenkins-buildenv/Docker_matrix_job/OS=ubuntu/workspace/OS/ubuntu
  5. 总结

    1. 路径刚上来是有点难理解

      1. 有文档还好
      2. 没文档猜起来麻烦
    2. 如果涉及 -v, 多用 docker inspect 观察...

6. jenkins: 容器里执行 docker 命令

  1. 概述

    1. docker 远程执行
  2. 场景

    1. 容器里的 jenkins 脚本, 远程执行 docker 命令
  3. docker daemon

    1. 本质

      1. 带一个 restapi 的守护进程
      2. 本地的交互, 其实也是这个
  4. docker daemon: 暴露

    1. 修改配置文件

      # /lib/systemd/system/docker.service
      ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
  5. docker cli: 连接远程 daemon

    1. 添加环境变量

      export DOCKER_HOST=tcp://172.17.0.1:2375
    2. 在 dockerfile 里添加

    3. 在 命令行里添加选型啊

      -H http://172.17.0.1:2375
  6. 结论

    1. 远程访问开启, 原来还是很重要的

7. firewalld: 没事不要随便关闭

  1. 概述

    1. 不要随便关闭 firewalld
  2. 场景

    1. docker cli 连不上 docker daemon
    2. 我关闭了 dockerfile
  3. 结果

    1. docker cli 能连上了

    2. git 却克隆不了代码了

      1. 网关能 ping 通, dns 不同

        1. 导致我查了半天资料
      2. 后来看了看 workspace 里, git 代码是有的

        1. 说明之前的网络, 是通的...
        2. 于是开始反思, 之前到底做了啥...
    3. 在 firewall 里添加了 2375 端口的规则

      1. 搞定
  4. 结论

    1. firewalld 要好好学学

      1. 其实就是 iptables

8. jenkins: 成功失败

  1. 概述

    1. jenkins 脚本
  2. 结论

    1. exit 0 是成功
    2. 其他就是 失败

8. docker & jenkins 路径

  1. 概述

    1. docker 配合 jenkins 时的 路径问题
  2. 场景

    1. docker 里的 jenkins
    2. jenkins 使用 host 的 docker-daemon
  3. 问题

    1. 命令在 jenkins 里输入
    2. 实际执行, 是在 host
    3. 如果有 mount, 则实际挂载的目录, 是 host
  4. 结果

    1. 我只能尽量让同样的目录挂载多次
    2. 或者使用 同名目录, 把资料整两次...
    3. 反正目前没啥好结果

Docker - 最近的踩到的一些坑的更多相关文章

  1. 细数阿里云在使用 Docker 过程中踩过的那些坑

    昨天下午道哥在微信上丢给我一条新闻,看看,我们阿里云支持 Docker 企业版了.我打开一看,果然,阿里云发布了飞天敏捷版,开始支持企业级的 Docker 容器. 美国中部时间4月19日,阿里云在容器 ...

  2. Redis上踩过的一些坑

    来自: http://blog.csdn.net//chenleixing/article/details/50530419 上上周和同事(龙哥)参加了360组织的互联网技术训练营第三期,美团网的DB ...

  3. [转帖]美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题

    美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题 博客分类: redis 运维 redis clustercluster-node-timeoutfailover  转载请 ...

  4. 三分之一的程序猿之社交类app踩过的那些坑

    三分之一的程序猿之社交类app踩过的那些坑 万众创新,全民创业.哪怕去年陌生人社交不管融资与否都倒闭了不知道多少家,但是依然有很多陌生人社交应用层出不穷的冒出来.各种脑洞大开,让人拍案叫起. 下面我们 ...

  5. 【Fine原创】JMeter分布式测试中踩过的那些坑

    最近因为项目需要,研究了性能测试的相关内容,并且最终选用了jmeter这一轻量级开源工具.因为一直使用jmeter的GUI模式进行脚本设计,到测试执行阶段工具本身对资源的过量消耗给性能测试带来了瓶颈, ...

  6. 与webview打交道中踩过的那些坑

    随着HTML5被越来越多的用到web APP的开发当中,webview这一个神器便日渐凸显出重要地位.简要的说,webview能够在移动应用中开辟出一个窗口,在里面显示html页面,css以及js代码 ...

  7. 美团在Redis上踩过的一些坑-目录(本人非美团)(转)

    来自:http://carlosfu.iteye.com/blog/2254154 分为5个部分:    一.周期性出现connect timeout    二.redis bgrewriteaof问 ...

  8. 安装python爬虫scrapy踩过的那些坑和编程外的思考

    这些天应朋友的要求抓取某个论坛帖子的信息,网上搜索了一下开源的爬虫资料,看了许多对于开源爬虫的比较发现开源爬虫scrapy比较好用.但是以前一直用的java和php,对python不熟悉,于是花一天时 ...

  9. [原创]阿里云RocketMQ踩过的哪些坑

    由于公司的最近开始使用RocketMQ来做支付业务处理, 便开启了学习阿里云RocketMQ的学习与实践之路, 其中踩了不少的坑, 大部份是由于没有仔细查看阿里云的技术文档而踩的坑. 但是有一个非常大 ...

随机推荐

  1. Jungle Roads HDU - 1301 prim

    #include<stdio.h> #include<string.h> #include<iostream> using namespace std; ; int ...

  2. Docker构建镜像过于缓慢解决-----Docker构建服务之部署和备份jekyll网站

    参考原文链接:https://www.jianshu.com/p/e6b7e68f2ba7 来自<第一本Docker书>,我觉得很有趣,就记录一下 准备国内ubuntu镜像 每次构建Ubu ...

  3. 在 myeclipse 引入项目

    1.进入 myeclipse 在界面空白处,右键,出现如下图所示 2.选择 Import...,弹出如下图所示界面 3.双击上图红框内的内容,弹出如下图所示界面,然后点击按钮“Browse...”,选 ...

  4. 使用FDATOOL生成xilinx中FIR滤波器IP核的系数

    1.在MATLAB命令窗口输入fdatool后回车,打开“Filter Designer & Analysis Tool”工具界面: 2.点击左下角的Set quantization para ...

  5. 0级搭建类010-Oracle Linux 6.x安装(OEL 6.10) 公开

    项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前 ...

  6. 51 nod 1212 无向图最小生成树

    http://www.51nod.com/Challenge/Problem.html#problemId=1212 代码 #include<bits/stdc++.h> using na ...

  7. bfs(队列模板)

    [题目描述] 当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单. 假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路. [输 ...

  8. MapReduce自定义排序器不生效一个可能的原因

    有问题的代码: package com.mytq.weather; import org.apache.hadoop.io.WritableComparable; import org.apache. ...

  9. C++-基类的析构函数为什么要加virtual虚析构函数(转)

    知识背景 要弄明白这个问题,首先要了解下C++中的动态绑定. 关于动态绑定的讲解,请参阅:  C++中的动态类型与动态绑定.虚函数.多态实现 正题 直接的讲,C++中基类采用virtual虚析构函数是 ...

  10. 安卓开发中遇到java.net.SocketException: Permission denied

    仅需在AndroidManifest.xml添加 <uses-permission android:name="android.permission.INTERNET" /& ...