常用Docker命令与小技巧

2019年10月07日 4663点热度 0人点赞 0条评论

安装脚本

Ubuntu / Centos

Debian的安装貌似有问题, 需要解决安装源的问题。

如果在海外的AWS或者GCP等云服务器厂商, --mirror自然不需要加上去了。

Centos在运行完成之后, 还需要手动的sudo systemctl start docker.service 否则会提示docker没有启动之类的错误

日志相关

Grep String

正确的姿势: docker logs nginx 2>&1 | grep "127."

比如查看Jupyter Notebook的token: docker logs notebook 2>&1 | grep "token"

其他支持的参数

-f : 类似tail -f 命令

--since : 从某个时间戳开始,比如2013-01-02T13:23:37 也支持相对时间,比如: 42m

--until : 与上类似, 不过是反过来。

-t, --timestamp: 显示时间戳

--tail N(default all) : 显示最后几行数据

Mount的技巧

比如Grafana 等,在docker image之中自带一些文件。如果直接mount对应的目录并且host目录为空, 那么docker内部的目录就会被覆盖。如何处理这种情况呢?

简单粗暴的方法1:(思路only)

先运行一次, 然后使用docker cp命令将其复制出来

然后删除刚才的docker container, 将文件复制到对应的目录,再mount

更优雅一些的方法2:

以启动ClickHouse为例

这样docker镜像自带的配置文件就不会在第一次mount的时候被清空

定时任务

比如mysql需要定期导出数据备份。这个操作最好是利用宿主机的crond来完成

常用Docker镜像及其安装命令

MySQL

安装

Dump 数据

  • 方式1: 已经在本地有mysql docker container

    下面的命令是针对docker内部的mysql,也可以直接指定参数dump remote mysql

  • 方式2 : 在本地还没有mysql docker container

    编辑器原因, 上面>没有正确显示出来

Restore 数据

还是参考上面Dump的方式,只不过命令行工具改成了mysql

Python Proxy

多多少少要搞一些爬虫吧。充分利用云服务器的IP用来做爬虫代理。目前发现最简单的爬虫代理搭建方法:

注意:

  1. 截至目前位置, 这个docker镜像的python脚本还比较老,不支持basic auth. 如果需要basic auth, 需要自行更新python文件,并重新docker build才可以。Github地址: https://github.com/abhinavsingh/proxy.py

  2. 在实际生产之中, 用多了貌似有自动无法链接的情况。也可能是目标网站的问题。

  3. 这个东东也可以作为浏览器SwitchSharp的代理哦, 不过推荐加上https + basic auth. 具体操作请看官方文档。

Jupyter Notebook

用了一圈, 感觉还是tensorflow镜像自带的Notebook比较简单。 因为在mount host 目录的时候, 没有奇奇怪怪的权限问题。bash script 如下:

如果还需要链接Apache Spark等,参考如下Script

常用的jupyter命令:

Grafana

一些简单的解释:

  • --user $ID 必须要设置, 否则docker内部会出现permission issue
  • GF_INSTALL_PLUGINS : 安装一些非自带的插件
  • GF_SECURITY_ADMIN_PASSWORD : 账号: admin / aaabbbccc

RangerWolf

保持饥渴的专注,追求最佳的品质

文章评论