CentOS下docker初步

一 当前完成目标

1.1 系统环境说明,开发环境:VSCode 1.63/Windows 10。部署运行环境:CentOS 7.6

1.2 Windows下一个简单的go项目代码,gin框架的web服务功能,docker容器内侦听端口8080

1.3 编译后发布到CentOS下,开启 10个web服务,docker容器外端口,8080-8089

可能需要用到的知识
windows下,vscoce,终端输入,发到windows

go env -w GOOS=windows

windows下,vscoce,终端输入,发布到linux

go env -w GOOS=linux

二 大体步骤

2.1 windows下编译好,运行文件【test_gin】上传到 CentOS 下目录test_gin,比如 /home/test_gin

2.2 下载安装docker client端,请参看其他网络资料。确认安装好, docker version 可以查询到版本记录

[root@tmp test_gin]# docker version
Client: Docker Engine - Community
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.12
...

Server: Docker Engine - Community
 Engine:
  Version:          20.10.12
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.12
...

这里可以确认一下,docker是分为client和server端,server端在远端,存放着我们可能需要的镜像文件,client端在我们自己的CentOS主机上,最初是没有任何镜像文件【使用 docker images 查看】的。

2.3 创建Dockerfile文件,目录结构如下

[root@tmp test_gin]# ls -lh
total 8.8M
-rw-r--r-- 1 root root  138 Mar  3 14:51 Dockerfile
-rwxr-xr-x 1 root root 8.8M Mar  3 14:48 test_gin

Dockerfile文件大体如下:

[root@tmp test_gin]# more Dockerfile
FROM alpine

EXPOSE 8080

COPY test_gin /home/test_gin/

WORKDIR /home/test_gin/

CMD './test_gin'

docker 的命令,需要详细查看网络资料。

2.4 创建image镜像文件


[root@tmp test_gin]# docker build -t test1 .
Sending build context to Docker daemon  9.166MB
Step 1/5 : FROM alpine #基于什么样的镜像源开始创建我们自己的镜像文件
 ---> c059bfaa849c
Step 2/5 : EXPOSE 8080 #容器开放的端口号,镜像文件只有运行起来,才成为一个容器。一个镜像文件可以创建n多个容器。类似windows下pe文件和进程的关系。
 ---> Using cache
 ---> a80a5f0fcce1
Step 3/5 : COPY test_gin /home/test_gin/ #copy 本地 test_gin 文件 到 镜像 /home/test_gin/ 下面。镜像目录会自行创建。
 ---> Using cache
 ---> 5b3a8c087dbe
Step 4/5 : WORKDIR /home/test_gin/
 ---> Using cache
 ---> c7696e75f72b
Step 5/5 : CMD './test_gin' #需要执行的命令
 ---> Using cache
 ---> eb8412e7382f
Successfully built eb8412e7382f
Successfully tagged test1:latest

镜像文件名称是 test1,这个镜像文件名字可以随意,只要符合程序变量规范。可以在本地查找一下 test1镜像文件,结果没有,说明已经提交到docker server端的git仓库。

FROM 命令就是基于什么样的镜像源文件,创建我们自己的镜像文件。这个最初并没有很好理解,等你创建好自己的镜像文件,运行后产生容器后,可以 把容器内的所有文件都 copy出来查看比对一下,就 大体清楚了。

#copy容器内文件
[root@tmp tmp]# docker cp 091aff04d182:/ ./

docker ps -a 显示所有容器,
091aff04d182为容器id【CONTAINER ID 】

2.5 运行镜像文件

docker run -d -p 8080:8080 -t test1
docker run -d -p 8081:8080 -t test1
docker run -d -p 8082:8080 -t test1
...

-d表示后台运行,-p 表示端口的映射。

2.6 使用测试工具postman测试确认

三 个人觉得需要注意的地方

3.1 镜像和容器的区别

镜像和容器的差别,网络上有一些比喻,可以参考,镜像就是类的实列,也就是对象,而容器就是类。
也可以理解为容器就是windows下的进程,而镜像就是windows下的pe文件。

3.2 docker的client端和server端

学海无涯,错误难免,如有发现,尽请指正。

--the end

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容