docker从入门到日常

安装

  1. 安装

    centos:

    sudo yum -y install docker-io   
    

    Ubuntu:

    sudo  wget -qO- https://get.docker.com/ | sh 
    

    如果是ubuntu14.04安装最新版本需要升级内核之后重启

    执行

    sudo apt-get install --install-recommends linux-generic-lts-xenial
    

    然后reboot.

    如果为了不重启可以按照低版本docker

    sudo apt-get -y install --force-yes docker-ce=18.06.1~ce~3-0~ubuntu
    

    如果还是报错, 依赖有问题 只能按照低版本docker. 可以通过以下命令检查可以安装的docker版本

     apt-cache madison docker-ce
    

    然后安装一个版本, 比如

    sudo apt-get install docker-ce=17.03.1~ce-0~ubuntu-trusty
    
  2. 将用户添加到docker组, 这样就不用再sudo了

    sudo usermod -aG docker $USER
    
  3. 启动docker 使用命令

    sudo service docker start
    
  4. docker换源

    sudo curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://6616fe43.m.daocloud.io          
    
  5. 重启docker

    centos

    sudo systemctl restart docker.service
    

    ubuntu

    sudo service docker restart  
    
  6. 报错处理

    • 如果遇到报错unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid…string

      是配置文件错了 vi /etc/docker/daemon.json 里面是

      {"registry-mirrors": ["https://registry-mirror.qiniu.com"],}

      多了一个逗号,删掉,再重启docker就好了

    • 如果报错docker -v 对挂载的目录没有权限 Permission denied

      是因为 centos7中安全模块selinux把权限禁掉了。

      执行 chcon -Rt svirt_sandbox_file_t 要挂载的目录

  7. 将docker加入到开机启动中

    chkconfig docker on
    

    日常

    常用rebuild.sh脚本

    #!/usr/bin/env bash
       
    # 设置变量
    project_name="hunting3"
    http_port=9000
       
    echo "停止容器"
    docker stop $project_name
       
    echo "删除容器"
    docker rm $project_name
       
    echo "启动容器"
    echo "设置网络模式为Host, 并访问容器内${http_port}端口"
    docker run --name $project_name -v $PWD:/workspace -v /data/hunting_rules/temp_file_from_user:/data/hunting_rules/temp_file_from_user -v /data/sample/:/data/sample/ --net=host -p $http_port:$http_port -itd cheungchan/python bash
       
    echo "安装依赖"
    docker exec $project_name bash -c "pip install -r requirements.txt"
    docker exec $project_name bash -c "pip install -r requirements_private.txt -i http://10.10.41.106:8001/simple --trusted-host=10.10.41.106"
       
    echo "启动web"
    docker exec  $project_name bash -c "gunicorn -c gunicorn.conf server:app --reload -D"
       
    echo "启动后台任务"
    # -d后台启动 -it前台启动 -e设置环境变量
    docker exec -d -e PYTHONPATH=.  $project_name python backgroud_scripts/monitor_for_gangs_event_to_tag_ruleset_ioc.py
    docker exec -d -e PYTHONPATH=.  $project_name python backgroud_scripts/monitor_for_office_samples.py
    docker exec -d -e PYTHONPATH=.  $project_name python backgroud_scripts/monitor_for_new_hunting.py
    docker exec -d -e PYTHONPATH=.  $project_name python backgroud_scripts/monitor_for_hunting.py
    docker exec -d -e PYTHONPATH=.  $project_name python backgroud_scripts/vt_notification_pull_to_db.py
       
    echo "rebuild完成"