模块三-作业


目录
  • 作业要求
    • 将镜像推送至 docker 官方镜像仓库
    • 通过 nsenter 进入容器查看 IP 配置

作业要求

  • 构建本地镜像
  • 编写 Dockerfile 将练习 2.2 编写的 httpserver 容器化
  • 将镜像推送至 docker 官方镜像仓库
  • 通过 docker 命令本地启动 httpserver
  • 通过 nsenter 进入容器查看 IP 配置

编写 Dockerfile 将练习 2.2 编写的 httpserver 容器化

### 1、编译httpserver,并压缩
PS F:\go\src\operators.com\golang\golang\m21> $ENV:GOOS="linux"
PS F:\go\src\operators.com\golang\golang\m21> go build 
PS F:\go\src\operators.com\golang\golang\m21> ls


    目录: F:\go\src\operators.com\golang\golang\m21


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022-06-12      9:36        7209265 m21
-a----        2022-06-11     22:45           1715 main.go
[root@liaoxz-k8s-node1 3]# tar -zcvf m21.tar.gz m21
###2、编写Dockerfile
[root@liaoxz-k8s-node1 3]# ls
Dockerfile  m21  m21.tar.gz
[root@liaoxz-k8s-node1 3]# cat Dockerfile 
FROM golang
ENV GOPROXY=https://goproxy.cn,direct
WORKDIR /appltaion/
ADD ./m21.tar.gz ./ 
EXPOSE 8080
ENTRYPOINT ["./m21"]
###3、将编写的docker制作成镜像
[root@liaoxz-k8s-node1 3]# docker build ./
[root@liaoxz-k8s-node1 3]# docker build ./
Sending build context to Docker daemon 11.28 MB
Step 1/6 : FROM golang
 ---> 76199a964a3f
Step 2/6 : ENV GOPROXY https://goproxy.cn,direct
 ---> Running in 61a5d025cdd4
 ---> 6e711b6cd9e6
Removing intermediate container 61a5d025cdd4
Step 3/6 : WORKDIR /appltaion/
 ---> 7bd4ab95bdbf
Removing intermediate container 7e3b18a942a7
Step 4/6 : ADD ./m21.tar.gz ./
 ---> 4219ef27bc57
Removing intermediate container 4ed957443651
Step 5/6 : EXPOSE 8080
 ---> Running in 4705fd3f9da7
 ---> a4067f6a0788
Removing intermediate container 4705fd3f9da7
Step 6/6 : ENTRYPOINT ./m21
 ---> Running in bd1af134b23f
 ---> 6c0376e2a385
Removing intermediate container bd1af134b23f
Successfully built 6c0376e2a385
[root@liaoxz-k8s-node1 3]# docker images 
REPOSITORY                                                 TAG                 IMAGE ID            CREATED             SIZE
                                                                   6c0376e2a385        7 seconds ago       972 MB

###4、build的容器添加tag
[root@liaoxz-k8s-node1 3]# docker tag 6c0376e2a385 liaoxz/webserver:0.0.1 
[root@liaoxz-k8s-node1 3]# docker images 
REPOSITORY                                                 TAG                 IMAGE ID            CREATED             SIZE
liaoxz/webserver                                                  0.0.1               6c0376e2a385        50 seconds ago      972 MB

将镜像推送至 docker 官方镜像仓库

###1、登录到docker hub
[root@liaoxz-k8s-node1 3]# docker login -u liaoxz
Password: 
Login Succeeded
###2、上传到docker hub
[root@liaoxz-k8s-node1 3]# docker  push  liaoxz/webserver:0.0.1
The push refers to a repository [docker.io/liaoxz/webserver]
fe6c9476d399: Pushed 
7da87d0893bf: Pushed 
7d251f26bba5: Mounted from liaoxz/gowebserver 
93577ba442d7: Mounted from liaoxz/gowebserver 
aa12cb66a673: Mounted from liaoxz/gowebserver 
ee509ed6e976: Mounted from liaoxz/gowebserver 
9177197c67d0: Mounted from liaoxz/gowebserver 
7dbadf2b9bd8: Mounted from liaoxz/gowebserver 
e7597c345c2e: Mounted from liaoxz/gowebserver 
0.0.1: digest: sha256:f4b1f23f838d546aff59368d13e721f2e7bd4c4f4b7e8dc1d7f976283f7e3059 size: 2213


登录dockerhub查看

通过 docker 命令本地启动 httpserver

[root@liaoxz-k8s-node1 3]# docker run -d -p 8080:8080 --name webserver0.0.1  liaoxz/webserver:0.0.1 
ebc093f067faa902de6276101951865a1013809b6de66972f9a28e710f9ccf48
[root@liaoxz-k8s-node1 3]# docker ps -a|grep webserver0.0.1
ebc093f067fa        liaoxz/webserver:0.0.1                                                                                                             "./m21"                  15 seconds ago      Up 14 seconds             0.0.0.0:8080->8080/tcp   webserver0.0.1
[root@liaoxz-k8s-node1 3]# ss -ntl |grep 8080
LISTEN     0      4096        :::8080                    :::*         

通过 nsenter 进入容器查看 IP 配置

[root@liaoxz-k8s-node1 3]#  docker inspect -f {{.State.Pid}} ebc093f067fa
33090
[root@liaoxz-k8s-node1 3]# nsenter -t 33090  -n ip a
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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
51: eth0@if52:  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 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link 
       valid_lft forever preferred_lft forever