Skip to content

Commit 431a0c7

Browse files
committed
fix(podman): podman network error
1 parent 1d879f0 commit 431a0c7

2 files changed

Lines changed: 68 additions & 23 deletions

File tree

scripts/stack-utils

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ alias gzip="gzip -n -9"
77
. /etc/os-release
88
export GO_VERSION=1.22
99
export RUBY_VERSION=3.3
10+
export RUST_VERSION=1
1011
export STACK_NAME="${STACK_NAME:?name is required}"
1112
export STACK_VERSION="${STACK_VERSION:?version is required}"
1213
export OS_NAME="${OS_NAME:-linux}"

stacks/podman/build.sh

Lines changed: 67 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,12 @@
77
function build() {
88
generate-stack-path
99
cat << EOF > "${TARNAME}"/meta/dependencies
10-
fuse-overlayfs
1110
iptables
12-
conmon
1311
uidmap
14-
slirp4netns
1512
EOF
1613

1714
install-packages \
15+
man \
1816
btrfs-progs \
1917
git \
2018
iptables \
@@ -35,16 +33,16 @@ EOF
3533
uidmap \
3634
conmon \
3735
go-md2man \
38-
libapparmor-dev
36+
libapparmor-dev \
37+
protobuf-compiler
3938

40-
install-stack go "${GO_VERSION}" && . init-stack
39+
install-stack go "${GO_VERSION}"
40+
install-stack rust "${RUST_VERSION}"
41+
. init-stack
4142

4243
curl -fsSL -o tmp.tar.gz https://github.com/containers/podman/archive/refs/tags/v${STACK_VERSION}.tar.gz
4344
tar -xzf tmp.tar.gz && rm tmp.tar.gz
4445
cd podman-${STACK_VERSION}
45-
46-
47-
sed -i "s#/etc/containers#/opt/drycc/podman/etc/containers#g" `grep /etc/containers -rl .`
4846

4947
PREFIX=/opt/drycc/podman make BUILDTAGS="seccomp"
5048
PREFIX=/opt/drycc/podman make install
@@ -55,33 +53,48 @@ EOF
5553
curl -L -o /opt/drycc/podman/bin/crun https://github.com/containers/crun/releases/download/${crun_version}/crun-${crun_version}-linux-${OS_ARCH}
5654
chmod +x /opt/drycc/podman/bin/crun
5755

58-
cni_version=$(curl -Ls https://github.com/containernetworking/plugins/releases|grep /containernetworking/plugins/releases/tag/ | sed -E 's/.*\/containernetworking\/plugins\/releases\/tag\/v([0-9\.]{1,}(-rc.[0-9]{1,})?)".*/\1/g' | head -1)
59-
mkdir -p /opt/drycc/podman/opt/cni/bin
60-
cd /opt/drycc/podman/opt/cni/bin
61-
curl -fsSL -o tmp.tar.gz https://github.com/containernetworking/plugins/releases/download/v${cni_version}/cni-plugins-linux-${OS_ARCH}-v${cni_version}.tgz
62-
tar -xzf tmp.tar.gz
63-
rm tmp.tar.gz
64-
cd -
56+
# network
57+
netavark_version=$(curl -Ls https://github.com/containers/netavark/releases|grep /containers/netavark/releases/tag/ | sed -E 's/.*\/containers\/netavark\/releases\/tag\/v([0-9\.]{1,}[0-9]{1,}?)".*/\1/g' | head -1)
58+
git clone -b v${netavark_version} --dept=1 https://github.com/containers/netavark
59+
cd netavark; make; cp ./bin/* /opt/drycc/podman/libexec/podman
60+
cd -; rm -rf netavark
61+
62+
# slirp4netns
63+
slirp4netns_version=$(curl -Ls https://github.com/rootless-containers/slirp4netns/releases|grep /rootless-containers/slirp4netns/releases/tag/ | sed -E 's/.*\/rootless-containers\/slirp4netns\/releases\/tag\/v([0-9\.]{1,}[0-9]{1,}?)".*/\1/g' | head -1)
64+
curl -o /opt/drycc/podman/libexec/podman/slirp4netns --fail -L https://github.com/rootless-containers/slirp4netns/releases/download/v${slirp4netns_version}/slirp4netns-$(uname -m)
65+
chmod +x /opt/drycc/podman/libexec/podman/slirp4netns
66+
67+
# fuse-overlayfs
68+
fuse_overlayfs_version=$(curl -Ls https://github.com/containers/fuse-overlayfs/releases|grep /containers/fuse-overlayfs/releases/tag/ | sed -E 's/.*\/containers\/fuse-overlayfs\/releases\/tag\/v([0-9\.]{1,}[0-9]{1,}?)".*/\1/g' | head -1)
69+
curl -o /opt/drycc/podman/libexec/podman/fuse-overlayfs --fail -L https://github.com/containers/fuse-overlayfs/releases/download/v${fuse_overlayfs_version}/fuse-overlayfs-$(uname -m)
70+
chmod +x /opt/drycc/podman/libexec/podman/fuse-overlayfs
71+
72+
# conmon
73+
conmon_version=$(curl -Ls https://github.com/containers/conmon/releases|grep /containers/conmon/releases/tag/ | sed -E 's/.*\/containers\/conmon\/releases\/tag\/v([0-9\.]{1,}[0-9]{1,}?)".*/\1/g' | head -1)
74+
curl -o /opt/drycc/podman/libexec/podman/conmon --fail -L https://github.com/containers/conmon/releases/download/v${conmon_version}/conmon.$(dpkg --print-architecture)
75+
chmod +x /opt/drycc/podman/libexec/podman/conmon
6576

6677
chmod +x /opt/drycc/podman/bin/podman
6778
mkdir -p /opt/drycc/podman/etc/containers
6879
mkdir -p /opt/drycc/podman/run/containers/storage
6980
mkdir -p /opt/drycc/podman/var/lib/containers/storage
7081
mkdir -p /opt/drycc/podman/var/lib/shared
71-
mkdir -p /opt/drycc/podman/etc/cni/net.d
82+
mkdir -p /opt/drycc/podman/etc/netavark/net.d
7283

7384
cat << EOF > "/opt/drycc/podman/etc/containers/storage.conf"
7485
[storage]
7586
driver = "overlay"
7687
runroot = "/opt/drycc/podman/run/containers/storage"
7788
graphroot = "/opt/drycc/podman/var/lib/containers/storage"
89+
7890
[storage.options]
7991
additionalimagestores = [
80-
"/opt/drycc/podman/var/lib/shared",
92+
"/opt/drycc/podman/var/lib/shared",
8193
]
94+
8295
[storage.options.overlay]
8396
ignore_chown_errors = "true"
84-
mount_program = "/usr/bin/fuse-overlayfs"
97+
mount_program = "/opt/drycc/podman/libexec/podman/fuse-overlayfs"
8598
mountopt = "nodev,fsync=0"
8699
EOF
87100

@@ -90,18 +103,49 @@ EOF
90103
netns="private"
91104
92105
[network]
93-
cni_plugin_dir="/opt/drycc/podman/opt/cni"
94-
network_config_dir="/opt/drycc/podman/etc/cni/net.d/"
106+
network_config_dir="/opt/drycc/podman/etc/netavark/net.d/"
95107
default_network="podman"
108+
default_rootless_network_cmd="slirp4netns"
96109
97110
[engine]
98111
runtime="/opt/drycc/podman/bin/crun"
112+
conmon_path=[
113+
"/opt/drycc/podman/libexec/podman/conmon",
114+
]
115+
helper_binaries_dir=[
116+
"/opt/drycc/podman/libexec/podman",
117+
]
118+
EOF
119+
120+
cat << EOF > "/opt/drycc/podman/etc/containers/policy.json"
121+
{
122+
"default": [
123+
{
124+
"type": "insecureAcceptAnything"
125+
}
126+
]
127+
}
128+
EOF
129+
130+
cat << EOF > "/opt/drycc/podman/etc/containers/registries.conf"
131+
unqualified-search-registries = ["docker.io"]
132+
EOF
133+
134+
mkdir -p /opt/drycc/podman/profile.d
135+
cat << EOF > /opt/drycc/podman/profile.d/config.sh
136+
if [[ "\$(id -u)" = "0" ]]; then
137+
PODMAN_CONFIG_DIR=/etc/containers
138+
else
139+
PODMAN_CONFIG_DIR=\${HOME}/.config/containers
140+
fi
141+
rm -rf "\${PODMAN_CONFIG_DIR}"
142+
mkdir -p "\${PODMAN_CONFIG_DIR}"
143+
cp /opt/drycc/podman/etc/containers/* "\${PODMAN_CONFIG_DIR}"
99144
EOF
100145

101-
curl -L -o /opt/drycc/podman/etc/containers/registries.conf https://src.fedoraproject.org/rpms/containers-common/raw/main/f/registries.conf
102-
curl -L -o /opt/drycc/podman/etc/containers/policy.json https://src.fedoraproject.org/rpms/containers-common/raw/main/f/default-policy.json
103146
cp -rf /opt/drycc/podman/* ${DATA_DIR}
147+
104148
}
105149

106150
# call build stack
107-
build-stack "${1}"
151+
build-stack "${1}"

0 commit comments

Comments
 (0)