docker封装首次实践记录 2020-07-15

9_SooHyun · · 595 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

实践环境

从docker官仓pull下来的centos:latest镜像,run起来之后执行yum install epel-release && yum install golang装好go,但未配置go相关环境变量。然后commit 生成带go的新镜像,命名为centos:golang


centos:golang

实践目标

通过Dockerfile 和 docker build命令,在centos:golang镜像的基础上进一步封装,创建新镜像centos:autorungoapp

Dockerfile需要完成:

  • 设置新镜像的go环境变量
  • 本地的$GOPATH/src/test/testgo.go拷贝到镜像内的目标路径
  • 编译镜像内的testgo.go形成executable_file testgo
  • 设置【运行容器时,自动run testgo】

实践过程

创建镜像需要的context

Dockerfile:

FROM centos:golang
COPY testgo.go /goLearn/src/testgo.go
# 配置环境变量
ENV GOROOT=/usr/lib/golang GOPATH=/goLearn PATH=$PATH:$GOROOT/bin
# build .go. note: chmod is needed or testgo permission will be rw-r--r--
RUN cd /goLearn/src/ && go build -o testgo ./testgo.go && chmod 777 testgo
# run go
CMD cd /goLearn/src/ && ./testgo

testgo.go 打印接收的数字输入,遇到0退出
注意,go程序的入口是main(),因此testgo.go必须包含main(),也就是必须归属package main

package main

import (
    "fmt"
)

func main() {
    var num int
    for true {
        fmt.Scanf("%d", &num)
        fmt.Println("num = ", num)
        if num == 0 {
            break
        }
    }
}

docker build


镜像centos:autorungoapp成功创建

docker run && docker ps 创建/运行容器并查询运行状态


ca容器已经成功在后台跑起来

检查testgo进程


testgo进程running


over


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:9_SooHyun

查看原文:docker封装首次实践记录 2020-07-15

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

595 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传