podman的网络应用

本文介绍了Podman的网络应用,包括共享网络的设置,查看不同的网络模式,如何使用指定的网段,以及容器的导入和导出操作。此外,还讨论了在删除容器后重新导入的流程。

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值