podman的网络应用
[root@host ~]# podman run -d --name t100 -p 80 docker.io/library/nginx
74dd3208a460f4e91d50aed067dd78b16ac3cc2457ec57593328b30924eea749
[root@host ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74dd3208a460 docker.io/library/nginx:latest nginx -g daemon o... 7 seconds ago Up 7 seconds ago 0.0.0.0:39011->80/tcp t100
[root@host ~]# podman port 74dd3208a460
80/tcp -> 0.0.0.0:39011
共享网络
[root@host ~]# podman run -it --rm --net slirp4netns:allow_host_loopback=true bash
Resolving "bash" using unqualified-search registries (/etc/containers/registries.conf)
Trying to pull docker.io/library/bash:latest...
Getting image source signatures
Copying blob ec83969a912d done
Copying blob f0512d9ab85b done
Copying blob 339de151aab4 done
Copying config d057f4d6e5 done
Writing manifest to image destination
Storing signatures
bash-5.1# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: tap0: <BROADCAST,UP,LOWER_UP> mtu 65520 qdisc fq_codel state UNKNOWN qlen 1000
link/ether ce:e3:a0:92:4a:f5 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.100/24 brd 10.0.2.255 scope global tap0
valid_lft forever preferred_lft forever
inet6 fe80::cce3:a0ff:fe92:4af5/64 scope link
valid_lft forever preferred_lft forever
[root@host ~]# podman run -it --rm --net slirp4netns:allow_host_loopback=true bash
bash-5.1# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: tap0: <BROADCAST,UP,LOWER_UP> mtu 65520 qdisc fq_codel state UNKNOWN qlen 1000
link/ether d6:d4:67:87:3b:c0 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.100/24 brd 10.0.2.255 scope global tap0
valid_lft forever preferred_lft forever
inet6 fe80::d4d4:67ff:fe87:3bc0/64 scope link
valid_lft forever preferred_lft forever
查看网络模式
[root@host ~]# podman network ls
NETWORK ID NAME VERSION PLUGINS
2f259bab93aa podman 0.4.0 bridge,portmap,firewall,tuning
使用指定网段
[root@host ~]# podman network create mynetwork
/etc/cni/net.d/mynetwork.conflist
[root@host ~]# podman network ls
NETWORK ID NAME VERSION PLUGINS
2f259bab93aa podman 0.4.0 bridge,portmap,firewall,tuning
6d1b23123e26 mynetwork 0.4.0 bridge,portmap,firewall,tuning
#修改新生成的网络配置文件的子网和网关或者创建时使用--subnet 指定网段和子网掩码,--gateway指定网关
[root@host ~]# vim /etc/cni/net.d/mynetwork.conflist
{
"cniVersion": "0.4.0",
"name": "mynetwork",
"plugins": [
{
"type": "bridge",
"bridge": "cni-podman1",
"isGateway": true,
"ipMasq": true,
"hairpinMode": true,
"ipam": {
"type": "host-local",
"routes": [
{
"dst": "0.0.0.0/0"
}
],
"ranges": [
[
{
"subnet": "10.89.0.0/24",
"gateway": "10.89.0.1"
#修改/usr/share/containers/containers.conf文件设置默认网络为新创建的网络
[root@host ~]# vim /usr/share/containers/containers.conf
[network]
# Path to directory where CNI plugin binaries are located.
#
# cni_plugin_dirs = ["/usr/libexec/cni"]
# The network name of the default CNI network to attach pods to.
# default_network = "podman"
# The default subnet for the default CNI network given in default_network.
# If a network with that name does not exist, a new network using that name and
# this subnet will be created.
# Must be a valid IPv4 CIDR prefix.
#default_subnet = "10.88.0.0/16"
# Path to the directory where CNI configuration files are located.
#
# network_config_dir = "/etc/cni/net.d/"
default_network = "mynetwork"
#创建容器
[root@host ~]# podman run -it --rm bash
bash-5.1# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
3: eth0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 22:b9:e0:f9:e8:fe brd ff:ff:ff:ff:ff:ff
inet 10.89.0.2/24 brd 10.89.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20b9:e0ff:fef9:e8fe/64 scope link
valid_lft forever preferred_lft forever
容器的导入和导出
[root@host ~]# vim /usr/share/containers/containers.conf
...
runtime = "runc"
...
[root@host ~]# podman run -dt --name httpd -p 8080:80/tcp httpd
c385702c874ff4dba527c930014c25df0f4281bdc4b24a493f458ce66835d818
[root@host ~]# podman inspect httpd | grep -i runtime
"OCIRuntime": "runc",
"--runtime",
"Runtime": "oci",
"CpuRealtimeRuntime": 0,
[root@host ~]# podman container checkpoint httpd -e /tmp/httpd.tar.gz
c385702c874ff4dba527c930014c25df0f4281bdc4b24a493f458ce66835d818
[root@host ~]# ls /tmp/
containers-user-1000 systemd-private-31d91247ea874a61a0500b49024ddb65-chronyd.service-0uve1f
httpd.tar.gz vmware-root_962-2990678749
podman-run-1000 vmware-root_963-4256545027
run-1000
删除容器再导入
[root@host ~]# podman rm c385702c874ff4
c385702c874ff4dba527c930014c25df0f4281bdc4b24a493f458ce66835d818
[root@host ~]# podman container restore -i /tmp/httpd.tar.gz
c385702c874ff4dba527c930014c25df0f4281bdc4b24a493f458ce66835d818
[root@host ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74dd3208a460 docker.io/library/nginx:latest nginx -g daemon o... 11 minutes ago Up 11 minutes ago 0.0.0.0:39011->80/tcp t100
ed03e7ab718b docker.io/library/bash:latest bash 10 minutes ago Up 10 minutes ago elastic_elgamal
ca95351a3946 docker.io/library/bash:latest bash 9 minutes ago Up 9 minutes ago bold_ardinghelli
eaa524c21a30 docker.io/library/bash:latest bash 4 minutes ago Up 4 minutes ago gracious_gates
c385702c874f docker.io/library/httpd:latest httpd-foreground 10 seconds ago Up 10 seconds ago 0.0.0.0:8080->80/tcp httpd
本文介绍了Podman的网络应用,包括共享网络的设置,查看不同的网络模式,如何使用指定的网段,以及容器的导入和导出操作。此外,还讨论了在删除容器后重新导入的流程。
1094

被折叠的 条评论
为什么被折叠?



