その昔、KemaNet(Google 検索)というソフトウェアを作っていた人の、自分用メモのサイトです。
|
<<
2026.1
>>
[Stories] |
||||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
コピペ用の文字列を生成
$ for i in $(seq -w 10 20); do echo " <host mac='52:54:00:ff:ff:$i' name='vm$i' ip='192.168.122.$i'/>"; done
<host mac='52:54:00:ff:ff:10' name='vm10' ip='192.168.122.10'/>
<host mac='52:54:00:ff:ff:11' name='vm11' ip='192.168.122.11'/>
<host mac='52:54:00:ff:ff:12' name='vm12' ip='192.168.122.12'/>
<host mac='52:54:00:ff:ff:13' name='vm13' ip='192.168.122.13'/>
<host mac='52:54:00:ff:ff:14' name='vm14' ip='192.168.122.14'/>
<host mac='52:54:00:ff:ff:15' name='vm15' ip='192.168.122.15'/>
<host mac='52:54:00:ff:ff:16' name='vm16' ip='192.168.122.16'/>
<host mac='52:54:00:ff:ff:17' name='vm17' ip='192.168.122.17'/>
<host mac='52:54:00:ff:ff:18' name='vm18' ip='192.168.122.18'/>
<host mac='52:54:00:ff:ff:19' name='vm19' ip='192.168.122.19'/>
<host mac='52:54:00:ff:ff:20' name='vm20' ip='192.168.122.20'/>
virsh net-edit default で、上記を <dhcp> 要素の下に追加(省略)
追加後の状態を表示するとこう
$ virsh net-dumpxml default --inactive
<network>
<name>default</name>
<uuid>b4adef5f-bcc2-484a-96fc-d66f792930a5</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:20:fe:58'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
<host mac='52:54:00:ff:ff:10' name='vm10' ip='192.168.122.10'/>
<host mac='52:54:00:ff:ff:11' name='vm11' ip='192.168.122.11'/>
<host mac='52:54:00:ff:ff:12' name='vm12' ip='192.168.122.12'/>
<host mac='52:54:00:ff:ff:13' name='vm13' ip='192.168.122.13'/>
<host mac='52:54:00:ff:ff:14' name='vm14' ip='192.168.122.14'/>
<host mac='52:54:00:ff:ff:15' name='vm15' ip='192.168.122.15'/>
<host mac='52:54:00:ff:ff:16' name='vm16' ip='192.168.122.16'/>
<host mac='52:54:00:ff:ff:17' name='vm17' ip='192.168.122.17'/>
<host mac='52:54:00:ff:ff:18' name='vm18' ip='192.168.122.18'/>
<host mac='52:54:00:ff:ff:19' name='vm19' ip='192.168.122.19'/>
<host mac='52:54:00:ff:ff:20' name='vm20' ip='192.168.122.20'/>
</dhcp>
</ip>
</network>
networkを再起動(停止+起動)
既存のリース情報があれば削除しておきます
# network 停止
sudo virsh net-destroy default
# leases を削除
sudo rm -f /var/lib/libvirt/dnsmasq/default.leases
sudo rm -f /var/lib/libvirt/dnsmasq/default.status 2>/dev/null || true
sudo rm -f /var/lib/libvirt/dnsmasq/virbr0.status 2>/dev/null || true
# network 起動
sudo virsh net-start default
vm起動時にmacアドレスを指定
virt-install \
--network network=default,model=virtio,mac=52:54:00:ff:ff:10 \
(以下略)
vm起動後に確認
$ virsh domifaddr vm10 --source lease
名前 MAC アドレス プロトコル アドレス
-------------------------------------------------------------------------------
vnet13 52:54:00:ff:ff:10 ipv4 192.168.122.10/24
標準入力をクリップボードに書き込めるコマンド(xselやxclipなど)を用意して、
.tmux.conf にこれを書きます
# コピーしたらクリップボードにも反映
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "xsel -ib"
bind-key -T copy-mode-vi Enter send -X copy-pipe-and-cancel "xsel -ib"
systemctl --user enable --now podman.socket
loginctl enable-linger $USER
こうしておけば docker compose コマンドを podman api 経由で実行可能になる
DOCKER_HOST=unix://$XDG_RUNTIME_DIR/podman/podman.sock docker compose up -d
rootless podman/docker に優しい仕様
echo "net.ipv4.ip_unprivileged_port_start=80" | sudo tee /etc/sysctl.d/99-podman-ports.confsudo sysctl --system
net.ipv4.ip_unprivileged_port_start=0 にすると、全ポートを非特権ユーザーに開放できる
SELinux やファイアウォールまで考慮するとこんな感じになる
# カーネルに非特権ユーザーに全ポートを使わせる
echo "net.ipv4.ip_unprivileged_port_start=0" | sudo tee /etc/sysctl.d/99-podman-ports.confsudo sysctl --system
# SELinux にコンテナプロセスのネットワークポートバインドを緩和させる
sudo setsebool -P container_connect_any 1
# 実際に使うポートが SELinux に定義済みかを確認
sudo semanage port -l
# 未定義だった場合は SELinux に定義追加
sudo semanage port -a -t 適切なタイプ -p tcp ポート番号
# 外部から待ち受けする場合はファイアウォールの穴あけも実施する
# firewalld の場合
sudo firewall-cmd --add-port=ポート番号/tcp --permanent
sudo firewall-cmd --reload
二度とこうやって聞いてこないよう、docker.io に決め打ちしたいのです
$ podman run --rm redis:6.0 redis-server
? Please select an image:
->docker.io/library/redis:6.0
quay.io/redis:6.0
ユーザー毎の registries.conf にリポジトリを docker.io だけ指定します
conf_src="/etc/containers/registries.conf"
conf_user="$HOME/.config/containers/registries.conf"
[ -d "${conf_user%/*}" ] || mkdir -p "${conf_user%/*}"
sed '/^unqualified-search-registries.*quay.io/s/=.*/= ["docker.io"]/' "$conf_src" |
sed '/^registries.*quay.io/s/=.*/= ["docker.io"]/' >"$conf_user"
もとに戻したい場合
rm $HOME/.config/containers/registries.conf