1. curl -sSL https://get.daocloud.io/docker | sh
    2. yum 包更新到最新
    3. yum update
    4. yum -y install yum-utils
    5. 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
    6. yum install -y yum-utils device-mapper-persistent-data lvm2
    7. 设置yum源为阿里云
    8. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    9. 安装docker
    10. yum install docker-ce
    11. 安装后查看docker版本
    12. docker -v
    13. //docker 默认是iptable ,把docker交给firewall
    14. firewall-cmd --permanent --zone=trusted --change-interface=docker0
    15. firewall-cmd --reload
    16. 设置镜像映射
    17. vi /etc/docker/daemon.json
    18. 输入阿里云镜像
    19. {
    20. "registry-mirrors": ["https://d8ewkl2j.mirror.aliyuncs.com"]
    21. }
    22. systemctl daemon-reload #配置文件生效
    23. 启动docker
    24. systemctl start docker
    25. 停止docker
    26. systemctl stop docker
    27. 重启docker
    28. systemctl restart docker
    29. 查看docker状态:
    30. systemctl status docker
    31. 开机启动:
    32. systemctl enable docker
    33. 查看运行的容器
    34. docker ps
    35. 查看所有容器包括没运行的
    36. docker ps -a
    
    1、安装pip
    yum -y install epel-release
    yum install python3-pip
    pip3 install --upgrade pip
    2、安装docker-compose
    pip3 install docker-compose
    3、查看版本
    docker-compose version
    
    docker-compose up -d nginx                     构建建启动nignx容器
    docker-compose exec nginx bash            登录到nginx容器中
    docker-compose down                              删除所有nginx容器,镜像
    docker-compose ps                                   显示所有容器
    docker-compose restart nginx                   重新启动nginx容器
    docker-compose run --no-deps --rm php-fpm php -v  在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器
    docker-compose build nginx                     构建镜像 。        
    docker-compose build --no-cache nginx   不带缓存的构建。
    docker-compose logs  nginx                     查看nginx的日志 
    docker-compose logs -f nginx                   查看nginx的实时日志
    
    docker-compose config  -q                        验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。 
    docker-compose events --json nginx       以json的形式输出nginx的docker日志
    docker-compose pause nginx                 暂停nignx容器
    docker-compose unpause nginx             恢复ningx容器
    docker-compose rm nginx                       删除容器(删除前必须关闭容器)
    docker-compose stop nginx                    停止nignx容器
    docker-compose start nginx                    启动nignx容器
    
       1、下载镜像
    docker pull nginx
    2、运行nginx
    docker run -d --name nginx -p 80:80 nginx
    3、docker ps  如果成功会看到容器的存在
    4、数据卷的挂载(1、配置文件 2、部署的项目)
    在主机/mnt目录下执行 mkdir -p ./nginx/{conf,html,logs}创建挂载目录
     cd /mnt  
     mkdir -p ./nginx/{conf,html,logs}
     cd nginx
     5、拷贝容器的配置到宿主机文件夹中
      docker cp 容器ID:/etc/nginx/nginx.conf ./        
      docker cp 容器ID:/etc/nginx/conf.d/default.conf ./conf/
     6、删除nginx容器
      docker ps
      docker stop 容器ID
      docker rm   容器ID
      7、创建挂载了数据卷的nginx
    
      docker run -d --name nginx -p 80:80 -v /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf -v /mnt/nginx/logs:/var/log/nginx -v /mnt/nginx/html:/usr/share/nginx/html -v /mnt/nginx/conf:/etc/nginx/conf.d --privileged=true nginx
    
    
    docker pull tomcat
    docker run -d -p 8880:8080 -v /root/tomcat/:/usr/local/tomcat/webapps/ tomcat
    
    启动MQ
    docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
    查看容器
    docker ps
    查看所有容器包括没运行的
    docker ps -a
    进入容器
    docker exec -it 【容器名】bash
    停止容器
    docker container stop [容器名]
    删除容器
    docker container rm [容器名]
    
    拉取mysql
     docker pull mysql:5.7
    
    运行容器
    ---docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 -d mysql:5.7
    
    -- docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs 
    -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=1234 -d mysql:5.7
    
     docker run --name mysql5.7 -p 3306:3306 
      -v /mysql/my-master.cnf:/etc/mysql/my.cnf \
     -e MYSQL_ROOT_PASSWORD=123456 -d  mysql:5.7
    
    docker run -d -e MYSQL_ROOT_PASSWORD=root \
     --name mysql-slave \
      -v /root/mysql/mysql-slave.cnf:/etc/mysql/my.cnf \
      -p 3307:3306 mysql:5.7
    
    进入容器
     docker exec -it mysql5.7(ID) bash
     进入mysql
      mysql -uroot -p
      use mysql; //选择一个数据库
    修改加密方式  --MYSQL8需要
    alter user 'root'@'localhost' identified with mysql_native_password by 123456';
    查看加密方式
    select host,user,plugin from user;
    开启远程
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
    刷新权限  
    flush privileges;
    
    
    主从分离
    docker run --name master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    docker run --name slave -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    docker exec master  bash -c "echo 'log-bin=/var/lib/mysql/mysql-bin' >> /etc/mysql/mysql.conf.d/mysqld.cnf"
    docker exec master  bash -c "echo 'server-id=123454' >> /etc/mysql/mysql.conf.d/mysqld.cnf"
    docker exec slave bash -c "echo 'server-id=123454567' >> /etc/mysql/mysql.conf.d/mysqld.cnf"
    docker restart master  
     show variables like '%log_bin%'   #查看log-bin是否开启
     show master status;  显示log-bin参数
    
    change master to master_host='172.17.0.2', 
        master_port=3306, 
        master_user='backup', 
        master_password='123456', 
        master_log_file='mysql-bin.000003', 
        master_log_pos=688;
    start slave;
    
    show slave status;
    
    docker pull elasticsearch:7.6.2
    2.创建挂载的目录
    mkdir -p /mydata/elasticsearch/config
    mkdir -p /mydata/elasticsearch/data
    echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
    创建容器并启动
    
    docker run --name elasticsearch -p 9200:9200 -p 9300:9300  -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m" -v /mydata/elasticsearch/config/elasticsearch.yml:/elasticsearch/config/elasticsearch.yml -v /mydata/elasticsearch/data:/elasticsearch/data -v /mydata/elasticsearch/plugins:/elasticsearch/plugins -d elasticsearch:7.10.1
    其中elasticsearch.yml是挂载的配置文件,data是挂载的数据,plugins是es的插件,如ik,而数据挂载需要权限,需要设置data文件的权限为可读可写,需要下边的指令。
    chmod -R 777 要修改的路径
    
    -e "discovery.type=single-node" 设置为单节点
    特别注意:
    -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ 测试环境下,设置ES的初始内存和最大内存,否则导致过大启动不了ES
    
    docker run --name erch2lasticsea -p 9200:9200 -p 9200:9200  -e "discovery.type=single-node"  -e ES_JAVA_OPTS="-Xms64m -Xmx128m" --net=host -d elasticsearch:7.6.2
    
    设置密码:在配置文件加上
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    http.cors.allow-headers: Authorization
    xpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    
    重启
    cd bin
    elasticsearch-setup-passwords interactive
    
    docker pull docker.elastic.co/kibana/kibana:7.6.2
    mkdir -p /usr/local/kibana/config  #用于挂载数据卷
    cd /usr/local/kibana/config  #进入数据卷
    touch kibana.yml  #创建文件
    chmod -R 777 kibana.yml  #授权
    #配置文件内容
    server.name: kibana
    server.port: 5601
    server.host: 0.0.0.0
    elasticsearch.hosts: ["http://172.16.1.253:9200"]
    #elasticsearch.username: "elastic"
    #elasticsearch.password: "Pdzs123456"
    xpack.monitoring.ui.container.elasticsearch.enabled: true
    
    docker run -d -it --restart=always  --privileged=true  --name=kibana -p 5601:5601  -v/usr/local/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.6.2
    
    docker run -d --name=logstash logstash:7.6.2
    docker cp logstash:/usr/share/logstash /data/elk7/
    mkdir /data/elk7/logstash/config/conf.d
    chmod 777 -R /data/elk7/logstash
    
    http.host: "0.0.0.0"
    xpack.monitoring.elasticsearch.hosts: [ "http://192.168.31.196:9200" ]
    path.config: /usr/share/logstash/config/conf.d/*.conf
    path.logs: /usr/share/logstash/logs
    
    input {
        redis {
           batch_count => 1
            data_type => "list"
            key => "logstash-list"
            host => "192.168.0.2"
            port => 6379
            threads => 5
        }
    }
    
    output {
      elasticsearch {
        hosts => ["172.16.1.253:9200"]
        index => "logstash-system-localhost-%{+YYYY.MM.dd}"
     }
    }
    
    
    docker rm -f logstash
    
    docker run -d --name=logstash --restart=always  -p 5044:5044  -v /data/elk7/logstash:/usr/share/logstash -v /var/log/messages:/var/log/messages logstash:7.6.2
    
    RPUSH logstash-list "hello world"
    
    1. 拉取镜像
    docker pull redis
    2. 查看镜像
    docker images
    3.配置文件
    mkdir /usr/local/redis
    
    下载配置文件到指定目录
    wget -P  /usr/local/redis http://download.redis.io/redis-stable/redis.conf
    修改配置文件
    vi /usr/local/redis/redis.conf
    4.启动容器
    docker run -itd --name redis-test -p 6379:6379 redis
    
    docker run -p 6379:6666 -v $PWD/data:/data  -d redis:latest redis-server --requirepass xiaoyezi2008  --appendonly yes
    docker run -p 6379:6666 -v $PWD/data:/data  -d redis:latest redis-server   --appendonly yes
    命令说明:
    -p 6379:6379 : 将容器的6379端口映射到主机的6379端口
    -v $PWD/data:/data : 将主机中当前目录下的data挂载到容器的/data
    redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
    docker run --name redis -p 6380:6379 redis-test --requirepass 123456
    #前边是宿主机端口 后面是docker使用的端口
    4.备注
    为现有的redis创建密码或修改密码的方法:
    1.进入redis的容器 docker exec -it 容器ID bash
    2.进入redis目录 /usr/local/bin 
    3.运行命令:redis-cli
    4.查看现有的redis密码:config get requirepass
    5.设置redis密码config set requirepass ****(****为你要设置的密码)
    6.若出现(error) NOAUTH Authentication required.错误,则使用 auth 密码 来认证密码
    
    ### 带上图上方版本,否则找不到
    docker pull registry.cn-hangzhou.aliyuncs.com/ongo360/mycat:1.6.1
    ### 个人觉得名称太长   给它打个tag   xxx为该镜像的id 可以通过docker images 查看
    docker tag  xxx  mycat
    docker rmi registry.cn-hangzhou.aliyuncs.com/ongo360/mycat:1.6.1
    ### 创建 以下目录,为docker数据卷做准备  我这里目录为/root/mycat
    mkdir conf
    mkdir logs
    ### docker持久化mycat中的配置文件到conf/logs两个目录下,在我们修改宿主机下的文件时 docker容器中的文件也会同步更新  会减少很多麻烦
    docker run -d --name mycat  -p 8066:8066 -v /root/mycat/conf:/opt/mycat/conf -v /root/mycat/logs:/opt/mycat/logs  mycat
    ### 至此 我们mycat容器已经安装并成功运行 我们可以通过docker ps -a 查看所有容器
    ### 如果我们看见容器状态为 down 或者 exited 
    ### 我们可以进入 以上创建的logs 目录查看 日志
    mycat.log 存储运行日志
    wrapper.log 存储启动日志
    
    docker run --net="host"  --privileged=true --name devops-jenkins --user=root -p 8888:8888 -p 50000:50000 -v /opt/data/jenkins_home:/var/jenkins_home -d jenkins/jenkins:lts
    
    # 建立一个新的镜像文件,配置模板:新建立的镜像是以centos为基础模板
    # 因为jdk必须运行在操作系统之上
    FROM centos:7
    
    # 作者名  作者邮箱
    MAINTAINER cd <403783154@qq.com>
    
    # 创建一个新目录来存储jdk文件
    RUN mkdir /usr/local/java
    
    #将jdk压缩文件复制到镜像中,它将自动解压缩tar文件
    ADD jdk-11.0.3_linux-x64_bin.tar.gz /usr/local/java/
    
    # 创建软连接 ln -s 源文件 目标文件
    # RUN ln -s /usr/local/java/jdk-11.0.3 /usr/local/java/jdk
    
    # 设置环境变量
    ENV JAVA_HOME /usr/local/java/jdk-11.0.3
    ENV PATH $JAVA_HOME/bin:$PATH
    
    # VOLUME 指定了临时文件目录为/tmp
    # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
    VOLUME /tmp 
    
    # 将jar包添加到容器中并更名为app.jar
    ADD train-0.0.1-SNAPSHOT.jar /app.jar
    
    # 运行jar包
    RUN bash -c 'touch /app.jar'
    ENTRYPOINT ["java","-jar","/app.jar"]
    
    docker build  -t train:1.0 .
    --docker build  -t student:1.0 .
    docker run -d -p 9001:9001 testpro:1.0
    运行容器
    docker run -d -p 9000:9000 --name student -v /mnt/cloud:/mnt/cloud -v /mnt/img:/mnt/img -v /mnt/img/J182:/mnt/img/J182 -v /mnt/interview:/mnt/interview student:1.0
    
    docker pull sonatype/nexus3
    mkdir -p  /docker/nexus/data  
    chmod -R 777 docker
    docker run -d -p 8881:8881  --name nexus -v /docker/nexus/data:/nexus-data  \
    --privileged=true  \
    --restart=always \
     sonatype/nexus3