docker运行linux程序,docker 中运行自定义的程序

准备自定义的程序(略)

以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 程序启动的命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值