模块三-作业
目录
- 作业要求
- 将镜像推送至 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