1. 加速
systemctl daemon-reloadvi  /etc/docker/daemon.json
    {"registry-mirrors":["https://registry.docker-cn.com","https://uke7gffq.mirror.aliyuncs.com"]}
    {"registry-mirrors":["https://uke7gffq.mirror.aliyuncs.com"]}
    {"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]}
service docker restart
  1. docker所有容器
  1. 停止: docker stop $(docker ps -aq)
  2. 删除: docker stop $(docker ps -aq) && docker rm $(docker ps -aq)
  3. 清理: docker system prune -a 会删除数据集,还是谨慎点。
  4.  
  1. docker和文件:
  1. 保存镜像到压缩文件: docker save -o images.tar ubuntu:v3
  1. 保存所有的: docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o k8s-master.tar
  1. 加载文件到镜像: docker load -i images.tar
  1. 设置时区:
  1. mysql -e TZ="Asia/Shanghai"
  2. centos:-v /etc/localtime:/etc/localtime:ro
  3.  
  1. BUG解决方案
  1. bash-4.1#Bug修复:
  1. cp /etc/skel/.bash* /root/  && su
  2. source /root/.bashrc
  1. 宿主机overlay空间不足。把文件挪到其他数据目录,并建立软连接
  1. 停止docekr
  2. mv /var/lib/docker/* /data1/docker/
  3. ln -s /data1/docker/ /var/lib/docker
  1. 自动重启:--restart=unless-stopped
  2. mysql默认镜像使用:
  1. 启动:
  1. docker run -d -e MYSQL_ROOT_PASSWORD=DRsXT5ZJ6Oi55LPQ --restart=unless-stopped --name mysql --privileged=true -v /data/mysql/data:/var/lib/mysql -p 3306:3306 -e TZ=Asia/Shanghai mysql
  2. docker run -d -e MYSQL_ROOT_PASSWORD=root --name mysql --restart=unless-stopped -v /C/data/docker/mysql:/var/lib/mysql -p 3306:3306 -e TZ=Asia/Shanghai mysql
  3. docker run -d -e MYSQL_ROOT_PASSWORD=123456 --name mysql --restart=unless-stopped --privileged=true -v /data/mysql/data:/var/lib/mysql -p 3306:3306 -e TZ=Asia/Shanghai mysql:5.7
  4. docker run -d -e MYSQL_ROOT_PASSWORD=123456 --restart=unless-stopped --name mysql_3307 --privileged=true -v /data/mysql/data_3307:/var/lib/mysql -v /data/mysql/mysqld.cnf:/etc/mysql/my.cnf -p 3307:3306 -e TZ=Asia/Shanghai mysql:5.7
  5.  
  1. 进入:docker exec -it id bash
  2. 设置root访问:mysql -u root -proot
  3. 修改密码:
  1. ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
  2. FLUSH PRIVILEGES;
  1. 设置远程访问:
  1. GRANT ALL ON *.* TO 'root'@'%';
  2. FLUSH PRIVILEGES;
  1. 宿主机连接docker中的MySQL:mysql -u root -h 172.17.0.3 -proot -P13306
  2.  
  1. elasticsarch
  1. es: docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d --name elasticsearch --restart=unless-stopped  -v /data/es/data:/usr/share/elasticsearch/data -v /data/es/plugins:/usr/share/elasticsearch/plugins -p 9200:9200 -p 9300:9300
  2. docker run -d --name elasticsearch --restart=unless-stopped -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -v /data/es/data/:/usr/share/elasticsearch/data elasticsearch
  3. header: docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5
  1. redis默认镜像的启动:

docker run -v /data/redis/:/data --name redis_6379 --restart=unless-stopped --privileged=true -p 6379:6379 -d --restart=always redis redis-server --appendonly yes --requirepass "DRsXT5ZJ6Oi55LPQ"

docker run -v /e/data/redis/:/data --name redis_6379 --restart=unless-stopped --privileged=true -p 6379:6379 -d --restart=always redis redis-server --appendonly yes --requirepass "kjgz123"

  1. CDH quickstart使用:
  1. 下载镜像:docker pull cloudera/quickstart:latest
  2. 启动镜像:

docker run --name cdh --hostname=quickstart.cloudera --privileged=true -v /etc/localtime:/etc/localtime:ro -t -i -P -p 8022:8022 -p 9090:9090 -p 7180:7180 -p 8890:8890 -p 10002:10002 -p 80:80 -p 8888:8888 -p 7187:7187 -p 11000:11000 -p 8020:8020 -p 8480:8480 -p 10020:10020 -p 50020:50020 -p 8485:8485 -p 50090:50090 -p 19888:19888 -p 10033:10033 -p 25010:25010 -p 50070:50070 -p 50010:50010 -p 9083:9083 -p 50075:50075 -p 25020:25020 -p 60000:60000 -p 43136:43136 -p 8070:8070 -p 9095:9095 -p 18088:18088 -p 8040:8040 -p 60010:60010 -p 23020:23020 -p 60020:60020 -p 8085:8085 -p 8983:8983 -p 40439:40439 -p 21050:21050 -p 13562:13562 -p 60030:60030 -p 8030:8030 -p 8031:8031 cloudera/quickstart /bin/bash -c '/usr/bin/docker-quickstart && service ntpd start && /home/cloudera/cloudera-manager --force --enterprise'

  1. 进入镜像:sudo docker exec -it CONTAINER_ID /bin/bash
  2. 开启CDH: sudo /home/cloudera/cloudera-manager --force --enterprise
  3. 管理后台:ip:7180
  4. 用户名密码:
  5. 服务器状态:service --status-all
  6. 开启ntp:service ntpd start
  • MongoDB:
  1. 一般: docker run --name mongo -p 27017:27017 -v /home/data/mongo/db/:/data/db -d mongo
  2. 带密码: docker run -d --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin -p 27017:27017 -v /home/data/mongo/db/:/data/db mongo
  3. 连接: mongo -u admin -p admin -h localhost
  • Conda: docker run -v /data/log/:/data/log/ -v /home/crawl/:/home/crawl/ --name crawl -p 5432:5432 -d --restart=always conda /bin/bash
  • gerapy:docker run -d -v /data/gerapy:/app/gerapy -p 8000:8000 thsheep/gerapy:master
  • Celery Flower:
  • airflow:

sudo docker run -it astronomerio/airflow bash

airflow initdb

airflow server

  1. spark
  1. master: docker run --name spark-master -h spark-master -p 6066:6066 -p 7077:7077 -p 8080:8080 -e ENABLE_INIT_DAEMON=false -d bde2020/spark-master:2.4.5-hadoop2.7
  2. worker: docker run --name spark-worker-1 --link spark-master:spark-master -p 8081:8081 -e ENABLE_INIT_DAEMON=false -d bde2020/spark-worker:2.4.5-hadoop2.7
  1. zepplin: docker run -p 8080:8080 --rm -v /data/zepplin/logs:/logs -v /data/zepplin/notebook:/notebook -e ZEPPELIN_LOG_DIR='/logs' -e ZEPPELIN_NOTEBOOK_DIR='/notebook' --name zeppelin apache/zeppelin:0.9.0
  2. 把linux用docker设置为代理:http://0e2.net/post/75.html
  1. yum install docker
  2. docker pull kylemanna/openvpn
  3. OVPN_DATA="/root/ovpn-data"
  4. IP="xxx.xxx.xxx.xxx" # 我的公网IP
  5. mkdir ${OVPN_DATA}
  6. docker run -v ${OVPN_DATA}:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u tcp://${IP}
  7. docker run -v ${OVPN_DATA}:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
  8. docker run -v ${OVPN_DATA}:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass
  9. docker run -v ${OVPN_DATA}:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > ${OVPN_DATA}/CLIENTNAME.ovpn
  10. docker run --name openvpn -v ${OVPN_DATA}:/etc/openvpn -d -p 1194:1194 --privileged kylemanna/openvpn
  11. 经过以上七个步骤,你将会在/root/ovpn-data中看到一个CLIENTNAME.ovpn文件,将其下载到本地,利用OpenVPN GUI连接,即可。
  12. 下载openvpn,http://openvpn.net/index.php/open-source/downloads.html
  13. 并安装。 将CLIENTNAME.ovpn复制到C:\Program Files\OpenVPN\config中。  
  1. 服务:
  • docker hub:https://hub.docker.com/ or https://store.docker.com/
  • 修改镜像源头:
  • https://cr.console.aliyun.com/cn-qingdao/mirrors
  • 搜索镜像:docker search centos
  • 下载镜像:docker pull billsteve/scrapy
  • 镜像加速:
  • vi /etc/docker/daemon.json
  • "registry-mirrors": ["https://registry.docker-cn.com"]
  • "registry-mirrors": ["https://uke7gffq.mirror.aliyuncs.com"]
  1. docker镜像之间网络连接:
  2. -------------------------------------------------------------------------------------------------以下为命令-------------------------------------------------------------------------------------------------------------------------------------
  3.  
  4. 镜像:
  • 为镜像添加tag:docker tag IMAGE_ID REPOSITORY:Tag
  • 删除镜像:docker rmi image_id
  • 上传容器到仓库:
  • 创建仓库:scrapy
  • 提交容器:docker commit CONTAINER_ID billsteve/scrapy
  • 登录:docker login -> billsteve(用户名不是邮箱)-> passwd
  • push: docker push billsteve/scrapy:latest (一次不成功可以push多次)
  • 检测:docker inspect billsteve/scrapy
  • 删除某个tag: docker rmi REPOSITORY:TAG
  • 数据容器:
  • 创建数据容器:docker run -d -v /var/lib/mysql -name data-mysql --enterypoint /bin/
  • 使用数据容器:docker run -d -volumes-from data-mysql -e MYSQL_ROOT_PASS="muchsecurity" mysql
  • 批量删除镜像:docker image rm $(docker container ls -a -q)
  1. 容器
  • 查看容器的IP地址: docker inspect contain_id|grep IPAddress
  • 查看容器占用的端口: docker port contain_id
  • 给容器添加端口:
  • iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8888 -j DNAT --to-destination 172.17.0.2:8888
  • iptables-save
  • -----------------------------------------
  • iptables -t nat -A DOCKER -p tcp --dport 8888 -j DNAT --to-destination 172.17.0.2:8888
  • iptables -t nat -A POSTROUTING -j MASQUERADE -p tcp --source 172.17.0.2 --destination 8888 --dport 8888
  • iptables -A DOCKER -j ACCEPT -p tcp --destination 172.17.0.2 --dport 8888
  • 查看容器占用的端口: iptables -t nat -nvL | grep 172.17.0.2
  • 启动容器时确定端口: docker -it --name django -p 80:8080 web/django /bin/bash
  • 同主机下的容器间通信: or
  • 重命名容器:docker rename old_name new_name
  • 删除容器:docker rm contain_id
  • 显示容器运行的进程:docker top Name/ID
  • 列出容器改变的文件:docker diff Name/ID
  • centos7系统服务bug:docker run --privileged=true -it --name centos7 image_id /usr/sbin/init
  • 批量停止container:docker container stop $(docker container ls -a -q)
  • 批量删除container:docker container rm $(docker container ls -a -q)
  • 给容器固定ip
  • unzip pipework-master.zip
  • mv pipework-master pipework
  • cp -rp pipework/pipework /usr/local/bin/
  • 安装bridge-utils:yum -y install bridge-utils
  • 创建网络
  • brctl addbr br0
  • ip link set dev br0 up
  • ip addr add 192.168.2.1/24 dev br0
  • 给容器设置固定ip
  • pipework br0 hadoop0 192.168.2.10/24
  • pipework br0 hadoop1 192.168.2.11/24
  • pipework br0 hadoop2 192.168.2.12/24
  • 测试:
  • ping 192.168.2.10
  • ping 192.168.2.11
  • ping 192.168.2.12
  • 查看docker容器的IP配置:docker exec container_name ifconfig
  • 容器不能上网,宿主机执行:
  • echo "net.ipv4.ip_forward=1">>/etc/sysctl.conf
  • sysctl -p
  • 容器之间不能通信:重启一下宿主机网络
  • 从主机复制文件到容器:
  • sudo docker cp host_path containerID:container_path
  • sudo docker cp /usr/local/src/Anaconda3-5.2.0-Linux-x86_64.sh 75835a67d134:/usr/local/src/
  • 从容器复制文件到主机: sudo docker cp containerID:container_path host_path
  • 更新容器开机启动:docker update --restart=always contain_id
  1. docker切换数据目录
  1. 关闭docker : service docker stop
  2. vim /etc/docker/daemon.json 

{

"graph": "/new-path/docker"

}

  1. cp -R /var/lib/docker/* /new/path/docker
  • docker file

docker desktop可以使用命令行吗 docker所有命令_docker