• docker实战 (3) 常规配置



    本节会持续更新,在项目实战中遇到的docker配置都会更新进来


     docker常用命令:

    docker 介绍:
            what: 是什么
            why: 为什么用
            how:  怎么用
            
        docker 特点: 轻量级,可移植,占用资源少
        
        # 下载镜像
        docker pull mysql:5.6
        # 启动镜像
        docker run -p 3306:3306 --name mymysql  -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
        
    docker 基础命令:
     镜像
        docker version | docker -v  
        docker pull 镜像名称
        docker images | docker image ls
        docker search xxxx
        docker rmi xxxx   -f   强制删除
        
     容器:()
        docker run -d(后台运行) -p 3306:3306 -p (可以指定多个ip) 镜像
        docker logs -f xxx_id  查询日志  继续监听
        docker container logs xxx  查询日志  查询出所有日志
        docker ps 查询正在运行的容器
        docker ps -a  查询所有容器(包括停止的容器)
        docker exec -it xxx  /bin/bash  进入容器
        docekr stop xxx 停止启动的容器:
        docker start xxx  启动刚刚停止的容器
        docker rm xxx    删除容器(非运行)  -f  强制删除
        docker kill xxx   强制停止容器
        docker -e  设置参数(-e MYSQL_ROOT_PASSWORD=123456)
      镜像构建:(一般使用DockerFile进行构建)
        docker build -t 构建镜像名 .    (.代表DockerFile的所在路径)
       DcokerFile:
         FROM 基础镜像:
         RUN 
       hu@123456

    docker的远程访问设置:

      1>  修改 /usr/lib/systemd/system/docker.service  

        

        注意: 如果是centos7:就是如上配置:centos6  :  ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

      2>  保存配置文件,重新加载

        systemctl daemon-reload

      3> 重启服务 systemctl  docker  start | restart  | stop

    docker pull指令失败问题:

      1>因为镜像源需要翻墙,导致无法从中心库下拉镜像。我们可以通过修改成国内镜像仓库来进行下拉镜像  修改 /etc/docker/daemon.json

        

        注意:常用的国内镜像源还有:

        https://docker.mirrors.ustc.edu.cn

            https://hub-mirror.c.163.com

    docker 启动相差8小时问题: 

      1>  启动是设置时区

    docker run -itd    -v /mnt/upload:/mnt -v /etc/localtime:/etc/localtime:ro -v /data/appLogs:/var/log -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai   -p 8118:8118 -p 8111:8111  docker_image_id   /bin/bash 

      2> 在Dockerfile 文件中设置: 

    From java:8
    MAINTAINER huhy
    RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
    VOLUME /tmp
    ADD tranQueue.jar newfiber_project_queue.jar
    ENTRYPOINT ["java","-jar","newfiber_project_queue.jar"]

     docker容器动态添加端口映射:

      第一种修改方法: iptables 命令进行修改

    1: 查询容器的ip:
            docker inspect <container name or id>| grep IPAddress
        2: 查看Container的映射的端口
            docker port <container name or id>
        3: 用iptables查看容器映射情况
            iptables -t nat -nvL
            iptables -t nat -nvL --line-number
        4: 查询现有docker 容器映射列表
            iptables -t nat --list-rules DOCKER
        5: 添加端口映射
            a, 获取容器ip  
                docker inspect $container_name | grep IPAddress
            b. 添加转发规则  
                iptables -t nat -A DOCKER -p tcp --dport $host_port -j DNAT --to-destination $docker_ip:$docker_port  
            将容器的8000端口映射到docker主机的8001端口 
            iptables -t nat -A DOCKER -p tcp –dport 8001 -j DNAT –to-destination 172.17.0.19:8000
        6: 删除端口映射规则
            a. 获取规则编号  
                iptables -t nat -nL --line-number
            b. 根据编号删除规则  
                iptables -t nat -D DOCKER $num
        7: 保存iptables规则
            iptables-save
        注意:端口映射完毕后,端口映射也不会显示出来,不能通过docker port [container_name|container_id]查询到结果
    View Code

        第二种修改方法: 修改配置文件进行修改 

    1> 找到对应容器:
    2> 停止容器, 停止服务 (systemctl stop docker/service docker stop)
    3> 修改 /var/lib/docker/containers/{容器 ID+ 一些字符串}/hostconfig.json 中
    同时修改同目录下的 config.v2.json 中 "ExposedPorts":{"容器端口 /tcp":{}}
    4> 在容器运行时添加映射
    5> 重启服务, 启动容器 (systemctl start docker/service docker start)
    View Code
  • 相关阅读:
    关于设计
    开机速度优化
    寻找发帖“水王”《编程之美》笔记
    SPSS学习笔记
    《你的灯亮着吗》读书笔记
    《遇见未知的自己》读书笔记
    Python中字符串与字典间转换
    ide vim 设置zz
    Redis几个认识误区zz
    探索AJAX中的消息传输模式(二)
  • 原文地址:https://www.cnblogs.com/huhongy/p/11383766.html
Copyright © 2020-2023  润新知