资讯专栏INFORMATION COLUMN

docker在centos安装golang操作及部分理解

huaixiaoz / 2062人阅读

摘要:前两天在本地安装了,熟悉了下命令之后,还是忍不住到上进行了一波镜像部署,以下是我的操作步骤和一些想法。但是如果想要将当前目录的文件复制进里头,首先要保证镜像在运行,然后命令中的容器名使用我圈出来的那个名字。

前两天在本地安装了docker,熟悉了下命令之后,还是忍不住到centos上进行了一波golang镜像部署,以下是我的操作步骤和一些想法。
准备:一台安装了docker的可联网的centos服务器

1、不多说,写Dockerfile(只想体验dockerfile的操作流程,所以选择了yum的安装方式)
# docker build
# Version 1.0
#
FROM centos
#
MAINTAINER yancoder@163.com
#
RUN yum install -y epel-release
RUN yum install -y docker-io
RUN yum provides "*/applydeltarpm"
RUN yum install deltarpm -y
RUN yum install -y gcc
RUN yum install -y go
RUN mkdir -p /data/gopath
ENV GOPATH /data/gopath
ADD src/ /data/gopath/src
ADD pkg/ /data/gopath/pkg
ADD test.go /data/gopath/test.go
WORKDIR /data/gopath
RUN go build -o server.bin test.go
#
CMD /data/gopath/server.bin

注释别问我在gcc和go安装之前为什么还有四个安装步骤,我特么也不知道,反正就是报错了提示要我安装

源码安装如下

FROM centos
MAINTAINER yancoder@163.com
ENV GOROOT /usr/local/go
ENV GOPATH /data/gopath
ENV PATH $GOROOT/bin:$PATH
RUN yum install -y curl
RUN curl -s -o go.tar.gz https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz
RUN tar --remove-files -C /usr/local/ -zxf go.tar.gz
RUN mkdir -p /data/go
RUN ln -sv /usr/local/go/bin/go /bin
ADD src/ /data/gopath/src
ADD pkg/ /data/gopath/pkg
ADD test.go /data/gopath/test.go
WORKDIR /data/gopath
RUN go build -o server.bin test.go
CMD /data/gopath/server.bin
2、创建镜像(注意最后面有一个小数点)
docker build -t golang:v1.0 .
3、创建容器,如果要绑定端口,也在这一步进行
docker run -d -p 80:80 golang:v1.0
4、在外部浏览器访问一下~

坑点
1、要是dockerfile运行过程中出错,会在images中生成的无用镜像,删除方法来自百度粘贴
# 删除命令:
docker rmi $(docker images | grep "none" | awk "{print $3}")
# 上一步报错还有未停掉的容器后可进行下面的步骤
# 停止容器
docker stop $(docker ps -a | grep "Exited" | awk "{print $1 }") 
# 删除:
docker rm $(docker ps -a | grep "Exited" | awk "{print $1 }")
# 删除镜像
docker rmi $(docker images | grep "none" | awk "{print $3}")
2、在run的容器内进行exit,将会退出容器,并且使得容器也stop。正确做法是使用exec方式,命令如下:
docker exec -it imageId /bin/bash
3、如果使用dockerfile直接ADD文件进docker里头的话,这个没啥。但是如果想要将当前目录的文件复制进docker里头,首先要保证镜像在运行(docker ps),然后docker cp 命令中的容器名使用我圈出来的那个名字。删除和启动停止容器都是用前面那个ID

4、还没找到给running的容器映射端口的方法,找了些帖子,貌似有配置文件可修改。方便起见在创建容器的时候绑定算了~
总结

docker是工具类应用,其实有点类似git,脑袋里头想一下docker的实现流程就能丝滑般掌握了

还有一些常用的docker命令,以及文件映射啥的,请点击docker操作手册

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27805.html

相关文章

  • dockercentos安装beego部分理解

    摘要:诚如前面一篇文章,是简单的布置了的一个,再次布写注最后一行不能使用和,不然会将启动日志输出到命令行,加会导致内未启动血泪史创建镜像创建容器注端口号绑定前面为本机的端口,后面为容器端口查看容器注此命令后面加上就能查看所有状态的镜像 诚如前面一篇文章,是简单的布置了golang的一个demo,再次布beego 1、写Dockerfile # docker build # Version 1...

    wanghui 评论0 收藏0
  • 记一次docker容器化部署

    摘要:事情是这样的一个人程序员,用写了个,写完后不会部署是的,这个人就是我今天真的是要被自己笑死终于有机会在公司项目中使用进行开发,整个开发过程相当亢奋然而当跟前端小哥哥联调完接口后,小哥哥问我什么时候能给线上地址一脸懵忘记还有上线这回事了往往自 事情是这样的 一个人程序员,用golang写了个server,写完后...不会部署 : ) 是的,这个人就是我... 今天真的是要被自己笑死 ...

    saucxs 评论0 收藏0
  • 01-Docker新手入门初见篇

    摘要:了解开源的容器平台用于分享管理容器的平台使用客户端服务器架构模式。守护进程会处理复杂繁重的任务,例如建立运行发布你的容器。客户端和守护进程之间通过或者进行通信。 Step1:了解Docker 开源的容器平台:Golang https://github.com/docker/dockerDocker Hub: 用于分享、管理 Docker 容器的 Docker SaaS 平台 -- D...

    oujie 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<