Docker常用命令与小技巧汇总

2020-06-17 07:00:37易采站长站整理

安装脚本

Ubuntu / Centos

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


curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun / AzureChinaCloud

如果在海外的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 为例


# Step 1.1: 创建一个docker volume (目的: 把CH Server的配置暴露出来)
docker volume create --driver local
--opt type=none
--opt device=/home/centos/workspace/clickhouse/configs
--opt o=bind
ch-server-configs

# Step 1.2 : 创建volume , mount 数据库数据
docker volume create --driver local
--opt type=none
--opt device=/home/centos/workspace/clickhouse/data
--opt o=bind
ch-server-data

# Step 2 : 启动 (注意: 当存储数据较多的时候, 第二次启动,会花比较长的时间来初始化。 初始化结束之前尝试链接会失败。)
sudo docker run -d --name mkt-ch-server
-v ch-server-configs:/etc/clickhouse-server
-v ch-server-data:/var/lib/clickhouse
--restart always
-p 9000:9000 -p 8123:8123
--ulimit nofile=262144:262144 yandex/clickhouse-server

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

定时任务

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


0 1 * * * docker exec mysqldump xxxx