2.1 debian-10上lxc安装与使用

debian-10上lxc安装与使用 #

1. 调整linux swap #

   # swap 信息
   swapon --show
   # 卸载当前分区
   swapoff /swap
   swapon --show
   # 删除分区文件
   rm -rf /swap
   # 创建分区文件
   dd if=/dev/zero of=/swapfile bs=1M count=1024
   # 修改分区文件的权限
   chmod 600 /swapfile

   # 格式化分区
   mkswap /swap
   # 挂在分区
   swapon /swap
   swapon --show
   # 查看系统是否加载
   free -m
   # 设置启动时自己加载,如果本身就有swap,则不需要设置
   more /etc/fstab

2. 创建sudo用户 #

useradd -m -s /bin/bash adminw # 创建用户并创建家目录
usermod -aG sudo adminw # 让用户可以使用sudo

3. lxc安装及使用 #

3.1 安装lxc #

sudo apt-get install lxc
lxc-checkconfig # 检查lxc配置是否正确

3.2 创建容器 #

下面是官方给出的使用模板创建容器的方法:

    sudo lxc-create --name mycontainer --template download -- --dist alpine --release 3.19 --arch amd64
    # --template download 下载镜像,官方镜像库:https://images.linuxcontainers.org/
    sudo lxc-start --name mycontainer  # 启动镜像

    # 查看镜像信息
    sudo lxc-info --name mycontainer

    # 查看镜像列表
    sudo lxc-ls --fancy

镜像信息: alt text

3.3 容器管理-预留IP #

我们可能需要容器的可预测 IP 地址。我们可以在主机上进行 DHCP 预留,这样每次容器加入本地网络时,都会为容器分配相同的 IP 地址。

    #1. 在/etc/default/lxc-net中取消注释: LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf
    sed -i 's|^#LXC_DHCP_CONFILE=.*$|LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf|' /etc/default/lxc-net
    #2. etc/lxc/dnsmasq.conf在此文件中添加预留
    echo "dhcp-host=mycontainer,10.0.8.100" >>/etc/lxc/dnsmasq.conf
    # IP 地址(即 )必须在 范围内,-LXC_DHCP_RANGE, 此配置也是在/etc/lxc/dnsmasq.conf中配置

3.3 端口映射 #

可以直接将宿主主机上的端口映射到lxc某个容器的端口上,可以直接使用iptables转发规则进行实现,具体步骤如下: 我们将宿主主机的 10087端口映射到lxc webcontainer(10.0.8.100)的10086端口

  # 查看iptable的规则
  sudo iptables -t nat -L -n -v

  # 添加端口转发规则,将外部 10086 端口的连接转发到 10.0.8.100 的 10086 端口
  sudo iptables -t nat -A PREROUTING -p tcp --dport 10086 -j DNAT --to-destination 10.0.8.100:10086

  # 安装 iptables-persistent
  sudo apt-get install iptables-persistent
# 保存当前的 iptables 规则
  sudo netfilter-persistent save

  # 配置 SNAT 规则,使内部服务器能够正确响应外部请求
sudo iptables -t nat -A POSTROUTING -d 10.0.8.100 -p tcp --dport 10086 -j MASQUERADE