gpt4 book ai didi

Docker常用命令与小技巧汇总

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 33 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Docker常用命令与小技巧汇总由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

安装脚本 。

Ubuntu / Centos 。

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

?
1
2
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 为例 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 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来完成 。

?
1
0 1 * * * docker exec mysqldump xxxx

常用Docker镜像及其安装命令 。

MySQL 。

安装 。

?
1
2
3
docker run --name some-mysql --restart always\
- v /my/own/datadir : /var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

Dump 数据 。

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

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

?
1
docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /path-to-data/all-databases .sql

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

?
1
2
3
# 用完就删除,并在命令行提示输入密码
docker run -i -- rm mysql:5.7 mysqldump --all-databases\
-h 172.17.0.1 -uroot -p | gzip -9 > /home/centos/workspace/mysql-data/backup .sql.gz

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

Restore 数据 。

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

Python Proxy 。

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

?
1
docker run --name py-proxy -d --restart always -p 8899:8899 abhinavsingh /proxy .py

注意:

  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 如下:

?
1
2
3
4
sudo docker run --name notebook -d --restart always \
  -p 127.0.0.1:8888:8888 \
  - v /path-to-workspace/notebooks : /tf \
  tensorflow /tensorflow :latest-py3-jupyter

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

?
1
2
3
4
sudo docker run --name pyspark-notebook -d \
  --net host --pid host -e TINI_SUBREAPER= true -p 8888:8888 \
  - v /path-to-workspace/notebooks : /tf \
  tensorflow /tensorflow :latest-py3-jupyter

Grafana 。

?
1
2
3
4
5
6
7
8
9
10
ID=$( id -u)
 
docker run \
  -d --restart always \
  -p 3000:3000 \
  --name=grafana \
  --user $ID - v /path-to-data/grafana-data : /var/lib/grafana \
  -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" \
  -e "GF_SECURITY_ADMIN_PASSWORD=aaabbbccc" \
  grafana /grafana

一些简单的解释:

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

总结 。

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我的支持.

原文链接:https://www.flyml.net/2019/10/07/docker-cmds/ 。

最后此篇关于Docker常用命令与小技巧汇总的文章就讲到这里了,如果你想了解更多关于Docker常用命令与小技巧汇总的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com