内容简介:前两天在本地安装了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
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
疯狂Java讲义(第4版)
李刚 / 电子工业出版社 / 2018-1 / 109
《疯狂Java讲义(第4版)》是《疯狂Java讲义》的第4版,第4版保持了前3版系统、全面、讲解浅显、细致的特性,全面新增介绍了Java 9的新特性。 《疯狂Java讲义(第4版)》深入介绍了Java编程的相关方面,《疯狂Java讲义(第4版)》内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、J......一起来看看 《疯狂Java讲义(第4版)》 这本书的介绍吧!