# myhttpserver **Repository Path**: ijunjie/myhttpserver ## Basic Information - **Project Name**: myhttpserver - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-14 - **Last Updated**: 2022-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 模块三作业 ### 1 构建本地镜像 ```shell script mkdir -p bin/amd64 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/amd64 . docker build -t wangjunjie/httpserver:v1.0 . ``` 或执行 `make release` ### 2 编写 Dockerfile 将练习 2.2 编写的 httpserver 容器化 [Dockerfile](./Dockerfile): ### 3 将镜像推送至 docker 官方镜像仓库 ```shell script docker push wangjunjie/httpserver:v1.0 ``` 或执行 `make push` ### 4. 通过 docker 命令本地启动 httpserver ```shell script sudo docker run --name myhttpserver -d -p 18080:80 -e "VERSION=123" wangjunjie/httpserver:v1.0 ``` 测试: GET /healthz: ```shell script ubuntu@VM-0-100-ubuntu:~$ curl -i http://172.21.0.100:18080/healthz HTTP/1.1 200 OK Date: Fri, 14 Jan 2022 07:23:00 GMT Content-Length: 0 ``` echo headers and version: ```shell script ubuntu@VM-0-100-ubuntu:~$ curl -i http://172.21.0.100:18080/hello -H 'MYHEADER:1' HTTP/1.1 200 OK Accept: */* Myheader: 1 User-Agent: curl/7.68.0 Version: 123 Date: Fri, 14 Jan 2022 07:22:05 GMT Content-Length: 0 ``` ### 5. 通过 nsenter 进入容器查看 IP 配置 ```shell script # 首先通过 docker inspect 获取容器进程 sudo docker inspect myhttpserver -f '{{.State.Pid}}' # nsenter 进入进程 namespace, 例如 pid 为 1444283 sudo nsenter -t 1444283 -u -i -n -p ``` nsenter 进入容器后,使用 ip addr 等命令查看网络配置 sample: ```console root@9efe31eade04:/home/ubuntu# ip addr 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default 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 14: eth0@if15: mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0 valid_lft forever preferred_lft forever ```