Docker - 最近的踩到的一些坑
- 概述
- 最近学习 docker 遇到的 坑
1. dockerfile: 安装命令
概述
- 安装命令
坑
- 选项参数里, 一定要 带 -y
- 不带的话, 基本会阻塞构建
- 选项参数里, 一定要 带 -y
2. 其他: 处理问题, 一定不能慌
概述
- 不要慌
认识
- 出现问题是常态, 不要慌
- 有日志先看日志
- 没日志再去网上找
- 尽量记得自己操作的步骤
- 控制变量
3. docker network: hosts 文件
概述
- 加入 docker network 的容器, hosts 文件不会有其他容器
场景
- docker 容器加入 docker network
看了两本书
- 书上都说
- hosts 文件里会加入别的容器
- 容器之间, 可以通过 主机名 ping 通
- 书
- 第一本 docker 书(修订版)
- docker 容器与容器云
- 书上都说
结果
- 我没有发现 host 文件
- 当时使用的镜像里没有 ping 命令
我的处理
- 重建容器, 验证 hosts
- 调整命令, 验证 hosts
- 切换 busybox 进行, 验证 hosts
- 在 busybox 下, ping
- 卧槽, 居然是通的
- hosts 里没有, 也可以通
- 给 容器装上 ping, 发现也能通...
- 后来发现, 原来是其他的问题
总结
- 如果遇上某些 网络环境的问题, 可以先用 busybox 这类小镜像调试
4. redis: 关闭 protected 模式
概述
- 尝试关闭 redis 的 protected 模式
场景
- 使用 app 连接 redis 时, 提示异常
- 仔细看, 是 protected 模式
- 没有账号密码
- 只能 localhost 连
- 处理
- 思路1
- 关闭 protected 模式
- 思路2
- 添加 bind 地址
- 思路1
- 仔细看, 是 protected 模式
- 使用 app 连接 redis 时, 提示异常
我的处理
- 最开始没看 异常
- 以为网断了, 所以搞了半天
- 看了异常
- 异常写得很清楚
- 尝试修改配置
- 进入 redis-cli 连接
- 修改 protected 模式属性
CONFIG SET protected-mode no
- 结果没成功
- 修改 protected 模式属性
- 进入 redis-cli 连接
- 重启 redis, 添加命令行选项
--protected-mode no
- 结果成功
- 最开始没看 异常
总结
- 好好看异常提示
5. jenkins: workspace
概述
- jenkins 工作目录的路径
场景
- 设置 自定义workspace
- 配合 git
freestyle
- git 的工程代码, 直接下载到 workspace 里
- 工程的名字目录直接没了
- 比如, 工程叫 demo, 下下来后, demo 目录直接没了, 内容在 workspace 里
- git 的工程代码, 直接下载到 workspace 里
多配置项目
- 我草这个东西真的有点麻烦
- 指定 axis 维度选项
- jenkins 会自建目录
- 场景
aixs
- OS ubuntu
目录
# workspace 是 /tmp/jenkins-buildenv/Docker_matrix_job/workspace
# 其中规则, 你们感受一下...
/tmp/jenkins-buildenv/Docker_matrix_job/OS=ubuntu/workspace/OS/ubuntu
- 场景
- 我草这个东西真的有点麻烦
总结
路径刚上来是有点难理解
- 有文档还好
- 没文档猜起来麻烦
如果涉及 -v, 多用 docker inspect 观察...
6. jenkins: 容器里执行 docker 命令
概述
- docker 远程执行
场景
- 容器里的 jenkins 脚本, 远程执行 docker 命令
docker daemon
- 本质
- 带一个 restapi 的守护进程
- 本地的交互, 其实也是这个
- 本质
docker daemon: 暴露
修改配置文件
# /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
docker cli: 连接远程 daemon
添加环境变量
export DOCKER_HOST=tcp://172.17.0.1:2375
在 dockerfile 里添加
在 命令行里添加选型啊
-H http://172.17.0.1:2375
结论
- 远程访问开启, 原来还是很重要的
7. firewalld: 没事不要随便关闭
概述
- 不要随便关闭 firewalld
场景
- docker cli 连不上 docker daemon
- 我关闭了 dockerfile
结果
docker cli 能连上了
git 却克隆不了代码了
网关能 ping 通, dns 不同
- 导致我查了半天资料
后来看了看 workspace 里, git 代码是有的
- 说明之前的网络, 是通的...
- 于是开始反思, 之前到底做了啥...
在 firewall 里添加了 2375 端口的规则
- 搞定
结论
- firewalld 要好好学学
- 其实就是 iptables
- firewalld 要好好学学
8. jenkins: 成功失败
概述
- jenkins 脚本
结论
- exit 0 是成功
- 其他就是 失败
8. docker & jenkins 路径
概述
- docker 配合 jenkins 时的 路径问题
场景
- docker 里的 jenkins
- jenkins 使用 host 的 docker-daemon
问题
- 命令在 jenkins 里输入
- 实际执行, 是在 host
- 如果有 mount, 则实际挂载的目录, 是 host
结果
- 我只能尽量让同样的目录挂载多次
- 或者使用 同名目录, 把资料整两次...
- 反正目前没啥好结果
Docker - 最近的踩到的一些坑的更多相关文章
- 细数阿里云在使用 Docker 过程中踩过的那些坑
昨天下午道哥在微信上丢给我一条新闻,看看,我们阿里云支持 Docker 企业版了.我打开一看,果然,阿里云发布了飞天敏捷版,开始支持企业级的 Docker 容器. 美国中部时间4月19日,阿里云在容器 ...
- Redis上踩过的一些坑
来自: http://blog.csdn.net//chenleixing/article/details/50530419 上上周和同事(龙哥)参加了360组织的互联网技术训练营第三期,美团网的DB ...
- [转帖]美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题
美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题 博客分类: redis 运维 redis clustercluster-node-timeoutfailover 转载请 ...
- 三分之一的程序猿之社交类app踩过的那些坑
三分之一的程序猿之社交类app踩过的那些坑 万众创新,全民创业.哪怕去年陌生人社交不管融资与否都倒闭了不知道多少家,但是依然有很多陌生人社交应用层出不穷的冒出来.各种脑洞大开,让人拍案叫起. 下面我们 ...
- 【Fine原创】JMeter分布式测试中踩过的那些坑
最近因为项目需要,研究了性能测试的相关内容,并且最终选用了jmeter这一轻量级开源工具.因为一直使用jmeter的GUI模式进行脚本设计,到测试执行阶段工具本身对资源的过量消耗给性能测试带来了瓶颈, ...
- 与webview打交道中踩过的那些坑
随着HTML5被越来越多的用到web APP的开发当中,webview这一个神器便日渐凸显出重要地位.简要的说,webview能够在移动应用中开辟出一个窗口,在里面显示html页面,css以及js代码 ...
- 美团在Redis上踩过的一些坑-目录(本人非美团)(转)
来自:http://carlosfu.iteye.com/blog/2254154 分为5个部分: 一.周期性出现connect timeout 二.redis bgrewriteaof问 ...
- 安装python爬虫scrapy踩过的那些坑和编程外的思考
这些天应朋友的要求抓取某个论坛帖子的信息,网上搜索了一下开源的爬虫资料,看了许多对于开源爬虫的比较发现开源爬虫scrapy比较好用.但是以前一直用的java和php,对python不熟悉,于是花一天时 ...
- [原创]阿里云RocketMQ踩过的哪些坑
由于公司的最近开始使用RocketMQ来做支付业务处理, 便开启了学习阿里云RocketMQ的学习与实践之路, 其中踩了不少的坑, 大部份是由于没有仔细查看阿里云的技术文档而踩的坑. 但是有一个非常大 ...
随机推荐
- vs2008 asp.net “无法连接到ASP.NET Development server”
这是因为该网站启动ASP.NET Development server时使用的端口被占用而导致的. 解决方法: 1.在“解决方案资源管理器”中选中网站项目名称,然后切换到“属性”窗口 2.在“属性”窗 ...
- [CF1303C] Perfect Keyboard - DFS
Solution 根据原字符串建图,每个字符是一个点,相邻则连边 然后从每一个度数为 \(1\) 的点开始爆搜连通块,合法情况下应该是一条链 #include <bits/stdc++.h> ...
- BZOJ4566&&lg3181 HAOI找相同字符(广义后缀自动机)
BZOJ4566&&lg3181 HAOI找相同字符(广义后缀自动机) 题面 自己找去 HINT 给定两个文本串,问从两个串中各取一个非空子串,使这俩子串相同,问方案有多少种.我的思路 ...
- C语言 小技巧函数方法总结
1.使用^(异或) 不引入第三变量交换两个变量的值. /* 交换 int a 和 int b 的值*/ #include <stdio.h> int main(int argc, char ...
- c#快速热身
一.选择结构: 1. if选择结构 2. if-else选择结构 3. if-else if-else if-else多重if选择结构 4. if-if-else-else 嵌套if选择结构 5. s ...
- poj1141题解
题意 空序列是规则序列:用小括号(或者方括号)把一个规则序列括起来依然是规则序列:两个规则序列并列在一起仍然是规则序列. 给出一个括号字符串S,求一个规则序列ANS,满足S是ANS的子序列且ans尽可 ...
- overfitting &&underfitting
1.过拟合 然能完美的拟合模型,但是拟合出来的模型会含有大量的参数,将会是一个含有大量参数的非常庞大的模型,因此不利于实现 1.1解决过拟合的方法 1.1.1 特征选择,通过选取特征变量来减少模型参数 ...
- smarty循环item命名规范
使用smarty循环渲染数据时第二次循环item复制命名不规范 item=data 后面代码使用data会与后台返回数据冲突 {%foreach from=$data.bind_data key=ke ...
- jacob导入项目
在 resource 下创建一个 lib 将网上下载的 jacob.jar 放入其中 在 pom 文件中导入相对应的 jar 包 <dependency> <groupId>c ...
- Linux DataGuard --
概述 Oracle Data Guard 是针对企业数据库的最有效和最全面的数据可用性.数据保护和灾难恢复解决方案.它提供管理.监视和自动化软件基础架构来创建和维护一个或多个同步备用数据库,从而保 ...