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
镜像信息:
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