• Docker进阶


    Docker进阶

    Docker容器命名与重命名

    命名

    • docker run -it -p 80:80 --name containerName img:tag /bin/bash

    重命名

    • docker rename old new

    指定Hostname

    • docker run -h hostname -it -p 80:80 --name containerName img:tag /bin/bash

    Docker容器CPU资源

    • docker run -it --cpu-shares 1024 docker.io/img:tag /bin/bash # --cpu-share指定在主机资源紧缺时该容器分配到的cpu的份额权重
    • 在容器中使用cat /sys/fs/cgroup/cpu/cpu.shares查看

    设置容器CPU亲和力

    • docker run -it --name container1 docker.io/img:tag --cpuset-cpus 0-1 /bin/bash # --cpuset-cpus只在多核上有效

    磁盘映射

    • docker run -it --name container1 --device /dev/sda:/dev/sda -p 80:80 docker.io/name:tag /bin/bash # 使用--device映射磁盘

    目录(卷)映射

    • docker run -it --name container -v /src:/dst -p 80:80 --device /dev/sda:/dev/sda docker.io/name:tag /bin/bash # 使用-v映射目录

    容器特权

    • 默认情况下, 容器是在没有特权模式下运行, 在该模式下虽然我们进入到bash中看到为root用户, 但是其实它是一个普通用户, 没有特权, 不能使用mount等命令
    • docker run -it --name container1 --cpuset-cpu 0,1 --cpu-shares 512 --privileged=true docker.io/name:tag /bin/bash

    Docker的网络

    Docker的网络模式

    1. host模式: 使用--net=host指定
    2. container模式: 使用--net=container=NAME|ID指定
    3. none模式: 使用--net=none指定
    4. bridge模式: 使用--net=bridge指定, 为默认, 当容器启动之后会自动分配动态ip; 在容器中使用pipwork工具为容器临时分配固定ip地址, 为静态ip地址

    为容器配置静态ip

    1. 配置桥接网络

      • yum install bridge-utils -y
      • cd /etc/sysconfig/network-scripts
      • cp ifconfig-ens33 ifconfig-ens33.bak
      • 编辑ifconfig-ens33
        • 去掉与IPV4有关的条目: IPADDR, NETMASK, GATEWAY, DNS, 为什么? -> 因为创建了br0设备, 计算机就是通过br0通信的, 需要将ens33上的IPV4地址放到br0上, 接下来只要在ens33中告诉计算机ens33的被添加到br0上即可
        • 添加BRIDGE="br0"告诉计算机(bridge-utils工具)ens33被添加到了br0上, IPV4的地址到br0上找即可
      • 创建ifconfig-br0
      
      DEVICE="br0"
      NM_CONTROLLED="yes"
      ONBOOT="yes"
      TYPE="Bridge"
      BOOTPROTO=none
      IPADDR=ens33的ip
      NETMASK=ens33的掩码
      GATEWAY=ens33的网关
      DNS1=ens33指定的DNS
      
      • 重启网络服务: service network restart, 不要使用systemctl restart network, 可能会有问题, 以后凡是与network有关的使用service
      • ifconfig查看是否新添加了br0接口, 发现ens33的ip跑到了br0接口上, br0与ens33的mac地址是一样的, 因为br0底层还是走ens33物理网卡
    2. 启动容器, 其中--net=none, docker run -itd --name container1 docker.io/name:tag /bin/bash --net=none

    3. 使用pipework命令配置容器ip

      • pipework br0 containerId 192.168.1.10/24@192.168.1.1
  • 相关阅读:
    心跳监控系统
    Mysql主从配置+读写分离(转)
    linux系统文件属性-硬连接、软连接
    巧用MySQL InnoDB引擎锁机制解决死锁问题(转)
    mysql数据库编码、字段编码、表编码 专题
    MySQL中select * for update锁表的问题(转)
    Android setTextColor无效_安卓setTextColor()的参数设置方式
    Android如何查看应用签名信息--微信平台开发应用的签名
    Android 生成keystore,两种方式
    MyEclipse + Maven开发Web工程的详细配置过程
  • 原文地址:https://www.cnblogs.com/megachen/p/10344378.html
Copyright © 2020-2023  润新知