作者:张华 发表于:2016-08-05
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
http://blog.csdn.net/quqi99 )

安装LXD

安装LXD, 并且设置使用静态子网, 通过指定静态IP来创建LXD容器.

# install lxd, refer - https://blog.csdn.net/quqi99/article/details/52131486
sudo snap install lxd --classic
sudo usermod -aG $USER lxd
# MUST NOT use sudo, so must cd to home dir to run it
cd ~ && lxd init --auto
sudo chown -R $USER ~/.config/
export EDITOR=vim# use static subnet 192.168.122.0/24 (qemu also uses this subnet) for lxd as well
sudo virsh net-destroy default
lxc network show lxdbr0
lxc network set lxdbr0 ipv4.address=192.168.122.1/24
lxc network set lxdbr0 ipv6.address none
ip addr show lxdbr0
sudo iptables-save |grep 192.168.122
ps -ef |grep 192.168.122# set lxc profile - https://github.com/openstack-charmers/openstack-on-lxd.git
cat << EOF | tee ./lxd-profile.yaml
config:boot.autostart: "true"linux.kernel_modules: openvswitch,nbd,ip_tables,ip6_tablessecurity.nesting: "true"security.privileged: "true"
description: ""
devices:ens3:mtu: "9000"name: ens3nictype: bridgedparent: lxdbr0type: nicens8:mtu: "9000"name: ens8nictype: bridgedparent: lxdbr0type: nickvm:path: /dev/kvmtype: unix-charmem:path: /dev/memtype: unix-charroot:path: /pool: defaulttype: disktun:path: /dev/net/tuntype: unix-char
name: juju-default
used_by: []
EOF
lxc profile create juju-default 2>/dev/null || echo "juju-default profile already exists"
cat ./lxd-profile.yaml |lxc profile edit juju-default
#lxc profile device set juju-default root pool=default
lxc profile show juju-default# create two test lxd containers
lxc network show lxdbr0
cat << EOF | tee network.yml
version: 1
config:- type: physicalname: ens3subnets:- type: staticipv4: trueaddress: 192.168.122.20netmask: 255.255.255.0gateway: 192.168.122.1control: auto- type: nameserveraddress: 8.8.8.8
EOF
lxc launch ubuntu:focal master -p juju-default --config=user.network-config="$(cat network.yml)"
cat << EOF | tee network.yml
version: 1
config:- type: physicalname: ens3subnets:- type: staticipv4: trueaddress: 192.168.122.21netmask: 255.255.255.0gateway: 192.168.122.1control: auto- type: nameserveraddress: 192.168.99.1
EOF
lxc launch ubuntu:focal node1 -p juju-default --config=user.network-config="$(cat network.yml)"
lxc exec `lxc list |grep master |awk -F '|' '{print $2}'` bash
lxc exec `lxc list |grep node1 |awk -F '|' '{print $2}'` bash
$ lxc list
+--------+---------+-----------------------+------+-----------+-----------+
|  NAME  |  STATE  |         IPV4          | IPV6 |   TYPE    | SNAPSHOTS |
+--------+---------+-----------------------+------+-----------+-----------+
| master | RUNNING | 192.168.122.20 (ens3) |      | CONTAINER | 0         |
+--------+---------+-----------------------+------+-----------+-----------+
| node1  | RUNNING | 192.168.122.21 (ens3) |      | CONTAINER | 0         |
+--------+---------+-----------------------+------+-----------+-----------+

更改默认的存储路径

默认存储池使用 /var/snap/lxd/common/lxd/storage-pools, 可能缺乏空间. 例如, 下列将默认存储池路径mount -o bind到/images/lxd

#just change storage-pools director
lxc profile show default
lxc profile device remove default root
lxc storage delete default
cat << EOF | sudo tee -a /etc/fstab
#https://serverfault.com/questions/763201/mount-bind-not-taking-affect-in-fstab-centos-6
#sudo mount -o bind /images/lxd /var/snap/lxd/common/lxd/storage-pools
/var/snap/lxd/common/lxd/storage-pools /images/lxd none bind 0 0
EOF
mkdir -p /images/lxd && sudo mount -a
sudo mount |grep -E 'images|storage-pools'
#restart snap.lxd.daemon, and create default storage again on '-o bind /images/lxd'
sudo systemctl restart snap.lxd.daemon
lxc storage create default dir && lxc storage show default
lxc profile device add default root disk path=/ pool=default
lxd sql global "SELECT * FROM storage_pools_config"

一种方法更改IP

可以:

sudo sed -i "s/10.178.64.89/10.178.64.90/g" /var/snap/lxd/common/lxd/networks/lxdbr0/dnsmasq.leases
systemctl restart snap.lxd.daemon
ssh -i ~/.local/share/juju/ssh/juju_id_rsa ubuntu@10.178.64.90

还可以:

lxc stop c1
lxc network attach lxdbr0 c1 eth0 eth0
lxc config device set c1 eth0 ipv4.address 10.99.10.42
lxc start c1

[已过时] Debian包安装LXD中可能遇到的问题

下面方法已经过时,因为采用的是debian包安装的lxd, 目前都是snap安装.
上面的命令会自动调用下列命令配置lxdbr0,但是有时候出错时可以使用下列命令分步调试。

sudo dpkg-reconfigure lxd
cat /etc/default/lxd-bridge  #/usr/lib/lxd/lxd-bridge
sudo service lxd-bridge restart
sudo systemctl status lxd-bridge

配置lxd-bridge时出错比较多,首先会遇到这么一个错误“Unable to connect to Upstart”,那是因为ubuntu 16.04里同时安装了upstart与systemd,使用下列命令禁用upstart的启动方式,今后启动程序采用init.d或systemd的方式。

sudo dpkg-divert --local --rename --add /sbin/initctl
sudo ln -s /bin/true /sbin/initctl
#sudo apt-get --reinstall install upstart
#sudo dpkg-diver --local --remove /sbin/initctl
#sudo rm /sbin/initctl

另外一个是/var/log/syslog中报这种错误“Aug 5 17:02:54 localhost lxd-bridge.start[23556]: Error: ??? prefix is expected rather than “10.0.8.1/24/24”.",这是采用sudo dpkg-reconfigure lxd命令生成的/etc/default/lxd-bridge文件中配置的下列LXD_IPV4_ADDR参数多出了/24。

## IPv4 address (e.g. 10.0.8.1)
LXD_IPV4_ADDR="10.0.8.1/24"

从而导致/usr/lib/lxd/lxd-bridge中的下列命令就会报上述错误。

ifup "${LXD_BRIDGE}" "${LXD_IPV4_ADDR}" "${LXD_IPV4_NETMASK}"

20220824更新

cat << EOF |tee  lxd-profile-config.yaml
#cloud-config
packages:- avahi-daemon- vim- jq- silversearcher-ag- libnss-mdns- git- build-essential- ubuntu-dev-tools
users:- name: zhhuabjssh-authorized-keys:- "ssh-rsa XXXXXX user@host" #you can just copy this line from ~/.ssh/id_rsa.pubgroups: adminshell: /bin/bashsudo: ALL=(ALL) NOPASSWD:ALLpasswd: "$6$XXXXXXX" this is a crypted password from /etc/shadow
EOF
lxc profile set default user.user-data - < lxd-profile-config.yaml
lxc profile device add default src disk source=/home/zhhuabj/src path=/home/hua/src

参考

  1. https://bayton.org/2016/05/lxd-zfs-and-bridged-networking-on-ubuntu-16-04-lts/

Play with LXD (by quqi99)相关推荐

  1. Testing ovn manually based on LXD (by quqi99)

    作者:张华 发表于:2022-05-27 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 准备两个LXD容器 $ lxc list +--------+---- ...

  2. 使用Juju将OpenStack部署在单机的LXD容器上(by quqi99)

    作者:张华 发表于:2016-08-05 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 http://blog.csdn.net/quqi99 ) 理论基础 ...

  3. LXC、LXD、Docker的区别与联系(by quqi99)

    版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 容器 namespace技术用来进行做进程间的隔 ...

  4. juju创建lxd容器时如何使用本地镜像(by quqi99)

    作者:张华 发表于:2023-03-01 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 问题 没有外网,所以配置了一个local custom镜像库,也使用了 ...

  5. Play with OSM (by quqi99)

    作者:张华 发表于:2020-05-08 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 对OSM的一般印象 各种社区推动着NFV和SDN技术背后软件堆栈的创新 ...

  6. set up ovn development env (by quqi99)

    作者:张华 发表于:2022-07-08 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 编译ovs并启动ovs-vswitchd #https://docs. ...

  7. Use Octavia to Implement HTTPS Health Monitors (by quqi99)

    几张图感性认识ocatvia 问题 采用Neutron LBaaS v2实现HTTPS Health Monitors时的配置如下(步骤见附件 - Neutron LBaaS v2) backend ...

  8. Lost connection to MySQL server during query (by quqi99)

    版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 (作者:张华 发表于:2018-11-06) 问题 neutron designate日志中发现错误" ...

  9. LXC、LXD、Docker的区别与联系

    版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明  ( http://blog.csdn.net/quqi99 ) 容器 namespace技术用来进行做进程间的 ...

最新文章

  1. 变量声明和定义的区别
  2. linux find 多路径,linux多路径几个比较有用的命令
  3. Bat 多个执行操作选择
  4. js与设计模式----单例
  5. 【Python 必会技巧】使用 Python 追加写入 json 文件或更改 json 文件中的值
  6. Chrome插件(扩展)
  7. Android官方开发文档Training系列课程中文版:支持不同的设备之支持不同的平台版本
  8. muyucms轻量级内容cms
  9. pip安装指定版本包
  10. 扩展或插件 (Extension or Plugin )
  11. 无法向会话状态服务器发出回话状态请求
  12. AttributeError: ‘_IncompatibleKeys‘ object has no attribute ‘cuda‘
  13. mysql指定库执行sql语句_对多个mysql的一部分库进行执行sql语句
  14. su室内插件_SketchUp必学插件TOP100,每一个都是[室内/装饰/景观]设计的效率神器...
  15. ardupilot 增加新的定点控制实现刹车
  16. 如何将网页转为html文件,Chrome怎样保存网页为mhtml格式
  17. Elasticsearch Java虚拟机配置详解
  18. Linux内核启动过程和Bootloader
  19. 关于Docker,你要知道的都在这了
  20. 一些java语言的精巧写法

热门文章

  1. 简单弄得表单提示功能
  2. TP-四种url访问的方式
  3. VUE内使用RSA加解密
  4. 【计算机毕业设计】列车票务信息管理系统
  5. 前端写json模拟数据
  6. Java+SSM美妆商城全套电商购物(含源码+论文+答辩PPT等)
  7. 办上海居住证时需要的居委会证明和亲戚证明格式
  8. 报错Can‘t locate Fasta_reader.pm in @INC (you may need to install the Fasta_reader module)
  9. uni-app设置登录限制,未登录跳到登录界面
  10. 心静如水,消除浮躁的学习心态