准备自定义的程序(略)
以golang
编译的二进制程序为例
编译文件:(因为在docker
中要使用linux
的镜像,所以程序也要编译为linux
下能用的)
参考golang交叉编译
Mac 下编译 Linux 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
Linux 下编译 Mac 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
Windows 下编译 Mac 和 Linux 64位可执行程序
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
编写Dockerfile
创建Dockerfile
文件,把刚刚编译的main
二进制文件与Dockerfile
文件入在同一个目录下。
dir
--main
--Dockerfile
Dockerfile
内容如下:
FROM alpine
ADD main /usr/local/bin/
创建自定义程序的镜像
cd ${Dockerfile所有目录}
#创建镜像命名为demo_img
docker build -t demo_img .
运行容器
假设刚刚编译的程序需要访问网络,并且启动时要附带参数
假设正常启动程序是这样的:./main --listen_port=1234
然后就可以通过http://127.0.0.1:1234
来访问程序了
那么在容器中可以这样启动:
docker run -d -p 1234:1234 --name demo_main main --listen_port=1234
命令解析:-d
后台运行-p 1234:1234
端口映射--name demo_main
将容器名字设为demo_main--network host
设置网络模式为host
main --listen_port=1234
程序启动的命令
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。