首页 > 系统相关 >Ctr 创建nginx容器并使用curl访问

Ctr 创建nginx容器并使用curl访问

时间:2022-12-09 19:12:56浏览次数:81  
标签:00 Ctr nginx netns curl root localhost cni

这篇文章使用ctr创建一个nginx容器,并在宿主机使用curl进行访问。

Prerequisite

按照Containerd Quickstart完成:

  • 安装cni
  • 安装runc
  • 安装containerd, 并以systemd service方式启动

Steps

1. 拉取镜像:

ctr images pull docker.io/library/nginx:latest

2. 编译cnitool:

git clone https://github.com/containernetworking/cni.git
cd cni
go mod tidy
cd cnitool
GOOS=linux GOARCH=amd64 go build .

3. 创建容器网络:

cat << EOF | tee /etc/cni/net.d/nginx.conf
{
    "cniVersion": "0.4.0",
    "name": "nginx",
    "type": "bridge",
    "bridge": "cni0",
    "isDefaultGateway": true,
    "forceAddress": false,
    "ipMasq": true,
    "hairpinMode": true,
    "ipam": {
        "type": "host-local",
        "subnet": "10.88.0.0/16"
    }
}
EOF

4. 创建容器网络命名空间:

[root@localhost cni]# ip netns add nginx
[root@localhost cni]# ip netns list
nginx
[root@localhost cni]# ls /var/run/netns/
nginx

给network namespace nginx添加网络:

[root@localhost cni]# cnitool add nginx /var/run/netns/nginx 
{
    "cniVersion": "0.4.0",
    "interfaces": [
        {
            "name": "cni0",
            "mac": "3a:55:12:e0:49:7a"
        },
        {
            "name": "veth96cb8bbe",
            "mac": "16:e7:3a:db:5e:43"
        },
        {
            "name": "eth0",
            "mac": "a2:51:45:e3:4c:f0",
            "sandbox": "/var/run/netns/nginx"
        }
    ],
    "ips": [
        {
            "version": "4",
            "interface": 2,
            "address": "10.88.0.2/16", # 分配的ip地址
            "gateway": "10.88.0.1"
        }
    ],
    "routes": [
        {
            "dst": "0.0.0.0/0",
            "gw": "10.88.0.1"
        }
    ],
    "dns": {}
}
[root@localhost cni]#cnitool check nginx /var/run/netns/nginx 

检查network namespace nginx 的网卡信息:

[root@localhost cni]# ip -n nginx addr
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether a2:51:45:e3:4c:f0 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.88.0.2/16 brd 10.88.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a051:45ff:fee3:4cf0/64 scope link 
       valid_lft forever preferred_lft forever

5. 启动容器:

$ ctr run --with-ns=network:/var/run/netns/nginx -d docker.io/library/nginx:latest nginx

进入容器:

[root@localhost cni]# ctr task exec -t --exec-id nginxbash nginx bash 
root@localhost:/# ls                                                  
  • --exec-id: exec specific id for the process 这个名字可以随便起。
  • -t allocate a TTY for the container

容器内curl命令无响应,暂时不知道为什么...

在容器外部访问nginx主页面:

[root@localhost cni]# curl http://10.88.0.2:80
<!DOCTYPE html>
<!--...-->
<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Clean up

停止容器内Task

[root@localhost cni]# ctr task list
TASK     PID      STATUS    
nginx    29783    RUNNING
[root@localhost cni]# ctr task kill nginx
[root@localhost cni]# ctr container del nginx
[root@localhost cni]# ctr task list
TASK    PID    STATUS

删除network命名空间及cni生成的文件:

[root@localhost cni]# cnitool del nginx /var/run/netns/nginx
[root@localhost cni]# ip netns del nginx
[root@localhost cni]# rm -rf /var/lib/cni/

标签:00,Ctr,nginx,netns,curl,root,localhost,cni
From: https://www.cnblogs.com/oneslide/p/16969766.html

相关文章

  • yum安装支持四层代理的nginx
    四层负载均衡的特点四层负载均衡仅能转发TCP/IP协议、UDP协议、通常用来转发端口,如:tcp/22、udp/53;四层负载均衡可以用来解决七层负载均衡端口限制问题;(七层负载均衡最大使......
  • nginx 代理配置
     测试nginx 生产nginx   前端访问地址  ......
  • electron 创建托盘
    托盘import{Tray,Menu}from'electron'leticonTray=null//要创建全局的变量,不然会几秒后消失创建托盘函数asyncfunctioncreateTray(){consttrayMe......
  • 8、electron嵌入网页
    主要代码://嵌入网页letBrowserView=electron.BrowserView;letview=newBrowserView();mainWindow.setBrowserView(view);view.setBounds({x:0......
  • 7、electron通过浏览器打开链接
     electron默认打开链接是在当前程序里面打开,可以通过系统的浏览器默认打开链接1、新建渲染进程页“通过浏览器打开链接.html”<!DOCTYPEhtml><htmllang="en"><head......
  • nginx中server_name的作用
    转:nginx中server_name的作用  先上例子nginx部署在局域网中192.168.2.4的服务器上,修改nginx.conf配置文件,添加3个server,然后执行命令nginx-sreload重新加载nginx......
  • Nginx 反向代理如何获取真实的ip
    问题出现的环境:本地(H)postMan 请求nginx(A服务器)--转到两台应用服务器(B,C);预期是应用服务器接口请求的时候,拿到的是本地的H的服务器,但是拿到的是A服务器的IP; 转:nginx......
  • nginx + graylog 对于日志进行管理的一个实践
    以下整理一个自己结合ngin+graylog进行日志处理的实践,可以参考日志参考玩法   参考配置logformat参考如下,可以配置一些符合自己业务的logformat不同业务......
  • 在nginx配置jenkins反向代理
    配置文件如下server{listen80;listen[::]:80;server_nameci.10086z.cn;location/{rewrite(.*)https://ci.10086z.cn$1permanent;try_files$uri$......
  • 宝塔严重未知安全性漏洞(宝塔面板或Nginx异常)
    问题简述论坛上的帖子https://www.bt.cn/bbs/thread-105054-1-1.htmlhttps://www.bt.cn/bbs/thread-105085-1-1.htmlhttps://hostloc.com/thread-1111691-1-1.html......