「Debian活用/仮想マシン設定」の版間の差分

提供: Medeshima wiki
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の2版が非表示)
251行目: 251行目:
"data-root": "/docker"
"data-root": "/docker"
}
}
</nowiki>

※ver.29では、containerdが使われている

/etc/containerd/config.toml

<nowiki>
#root = "/var/lib/containerd"
</nowiki>
</nowiki>


295行目: 303行目:
<nowiki>
<nowiki>
$ docker build -t apache .
$ docker build -t apache .
$ docker run -d \
--name web \
-p 8080:80 \
apache
</nowiki>
</nowiki>

2026年7月24日 (金) 15:43時点における最新版

概要

設定

nftables

$ sudo systemctl reload nftables
$ sudo systemctl restart lxc-net
$ sudo systemctl restart docker
$ sudo nft list ruleset

libvirt

$ sudo adduser USER libvirt
$ newgrp libvirt

$ sudo virsh net-list --all
$ sudo virsh net-autostart default
$ sudo virsh net-start default

/etc/nftables.conf

table inet filter {
        chain input {
                iifname "virbr0" udp dport {53,67} accept
                iifname "virbr0" tcp dport 53 accept
        }
        chain forward {
                iifname "virbr0" accept
                oifname "virbr0" ct state established,related accept
        }
}

$ sudo nft insert rule inet filter input iifname "virbr0" accept
$ sudo nft insert rule inet filter forward iifname "virbr0" accept
$ sudo nft insert rule inet filter forward oifname "virbr0" accept

$ osinfo-query os

$ sudo virt-install \
  --name debian \
  --memory 4096 \
  --vcpus 4 \
  --disk path=~/libvirt/debian.qcow2,size=30,bus=virtio \
  --os-variant debian13 \
  --network network=default,model=virtio \
  --graphics spice \
  --cdrom ~/libvirt/debian-13.6.0-amd64-netinst.iso

$ virt-manager

削除

$ sudo virsh list --all
$ sudo virsh shutdown NAME
($ sudo virsh destroy NAME)
$ sudo virsh undefine NAME --remove-all-storage

bridge接続

※ifupdownやconnmanなどが起動しているなら停止する。

$ sudo nmcli connection add type bridge \
  ifname br0 \
  con-name br0 \
  ipv4.method auto \
  ipv6.method auto
$ sudo nmcli connection add type ethernet \
  ifname enp37s0 \
  master br0 \
  con-name br0-slave-enp37s0
$ sudo nmcli connection down "プロファイル 1"
$ sudo nmcli connection up br0
$ sudo nmcli connection up br0-slave-enp37s0

$ nmcli device status
$ nmcli connection show

virt-managerか、設定ファイル(/etc/libvirt/qemu)で設定する。

$ sudo virsh edit debian

$ virt-xml

systemd-networkdと共存する

/etc/NetworkManager/conf.d/10-unmanaged.conf

[keyfile]
unmanaged-devices=interface-name:enp37s0;interface-name:br0

sudo systemctl restart NetworkManager
nmcli device

/etc/systemd/network/10-br0.netdev

[NetDev]
Name=br0
Kind=bridge

/etc/systemd/network/20-enp37s0.network

[Match]
Name=enp37s0

[Network]
Bridge=br0

/etc/systemd/network/30-br0.network

[Match]
Name=br0

[Network]
DHCP=yes
IPv6AcceptRA=yes

sudo systemctl enable --now systemd-networkd

sudo apt install systemd-resolved
resolvectl status

LXC(Unprivileged)

~/.config/lxc/lxc.conf

lxc.lxcpath = /lxc

  • /etc/subuid
  • /etc/subgid
USER:100000:65536

~/.config/lxc/default.conf

lxc.include = /etc/lxc/default.conf

lxc.idmap = u 0 100000 65536
lxc.idmap = g 0 100000 65536

$ lxc-create -n debian -t download

/lxc/debian/config

lxc.apparmor.profile = lxc-container-default-with-nesting

/etc/lxc/lxc-usernet

USER veth lxcbr0 10

/etc/nftables.conf

table inet filter {
        chain input {
                iifname "lxcbr0" udp dport {53,67} accept
                iifname "lxcbr0" tcp dport 53 accept
        }
        chain forward {
                iifname "lxcbr0" accept
                oifname "lxcbr0" ct state established,related accept
        }
}

$ lxc-start -n debian
$ lxc-attach -n debian
$ lxc-stop -n debian

削除

$ lxc-stop -n debian
$ lxc-destroy -n debian

bridge接続

/etc/lxc/lxc-usernet

USER veth br0 10

/lxc/debian/config

lxc.net.0.link = br0

Docker

sudo adduser USER docker

/etc/docker/daemon.json

{
    "data-root": "/docker"
}

※ver.29では、containerdが使われている

/etc/containerd/config.toml

#root = "/var/lib/containerd"

/etc/nftables.conf

table inet filter {
        chain input {
                # Docker
                iifname "docker0" udp dport {53,67} accept
                iifname "docker0" tcp dport 53 accept
        }
        chain forward {
                # Docker
                iifname "docker0" accept
                oifname "docker0" ct state established,related accept
        }
}

$ docker pull debian:trixie
$ docker images
$ docker run --name debian-trixie -it debian:trixie bash
$ docker rm debian-trixie

apache

Dockerfile

FROM debian:trixie

RUN apt update && \
    apt install -y apache2 && \
    rm -rf /var/lib/apt/lists/*

EXPOSE 80

CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

$ docker build -t apache .
$ docker run -d \
  --name web \
  -p 8080:80 \
  apache