内容简介:前两天在本地安装了docker,熟悉了下命令之后,还是忍不住到centos上进行了一波golang镜像部署,以下是我的操作步骤和一些想法。1、不多说,写Dockerfile(只想体验dockerfile的操作流程,所以选择了yum的安装方式)
前两天在本地安装了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中生成<none>的无用镜像,删除方法来自百度粘贴
# 删除命令: 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操作手册
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- OpenCV操作像素深入理解
- 理解Elixir的&(捕获操作符)
- 理解golang调度之一 :操作系统调度
- 关于DOM操作是异步的还是同步的相关理解
- Kafka科普系列 | 轻松理解Kafka中的延时操作
- 从矩阵与空间操作的关系理解CSS3的transform
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Agile Web Development with Rails, Third Edition
Sam Ruby、Dave Thomas、David Heinemeier Hansson / Pragmatic Bookshelf / 2009-03-17 / USD 43.95
Rails just keeps on changing. Rails 2, released in 2008, brings hundreds of improvements, including new support for RESTful applications, new generator options, and so on. And, as importantly, we’ve a......一起来看看 《Agile Web Development with Rails, Third Edition》 这本书的介绍吧!