• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Docker常用命令与小技巧汇总

    安装脚本

    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
    

    常用Docker镜像及其安装命令

    MySQL

    安装

    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

    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

    # 用完就删除,并在命令行提示输入密码
    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用来做爬虫代理。目前发现最简单的爬虫代理搭建方法:

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

    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

    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

    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 

    一些简单的解释:

    总结

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

    上一篇:Linux 3.X/4.x/5.x 忘记宝塔面板密码的解决方法
    下一篇:centos8 使用yum 安装 mongodb 4.2的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Docker常用命令与小技巧汇总 Docker,常用,命令,与,小,技巧,