美文网首页
《Docker初相见》

《Docker初相见》

作者: 吕檀溪 | 来源:发表于2017-11-29 16:35 被阅读16次

什么是Docker

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

Docker通常用于如下场景

  • web应用的自动化打包和发布
  • 自动化测试和持续集成、发布
  • 在服务型环境中部署和调整数据库或其他的后台应用
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境

golang为什么使用Docker作为容器

多数Go应用程序时简单的二进制文件。这就引发一个问题为什么使用Docker运行一个Go应用程序?一些使用Docker运行Go的理由包
括:

  1. Web应用程序通常都有模版和配置文件。
  2. Docker有助于保持这些文件与二进制文件的同步
  3. Docker确保了在开发或生产中完全相同的配置。
  4. 很多时候当应用程序可以在开发环境中正常工作时,在生产环境去无法正常工作。使用DOcker则把你从对这些问题的担心中解放了出来。在一个大型的团队中主机、操作系统及所安装的软件可能存在很大的不同。Docker提供了一种机制来确保一致的开发环境配置。这将提升团队的生产力并且在开发阶段减少冲突和可避免问题的发生。

安装Docker

我的电脑是Windows10,所以我在官网下载了windows版本的docker安装包,下载好了以后,一直安装就可以了。有其他需求的同学可参考windows下安装docker有更多的说明。

实战

  1. 创建一个项目为hellodocker
  2. 创建一个main.go(没什么特别)
package main

import (
    "net/http"
    "fmt"
)

func main() {
    http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
        fmt.Fprint(writer,"hello docker")
    })
    http.ListenAndServe(":8080",nil)
}

  1. 在项目的根目录创建一个叫dockerfile的文件
# 得到最新的 golang docker 镜像
FROM golang:latest

# 在容器内部创建一个目录来存储我们的 web 应用,接着使它成为工作目录。
RUN mkdir -p /go/src/go-mgox

WORKDIR /go/src/GoMgo 

# 复制 web-app 目录到容器中

COPY . /go/src/GoMgo
# 下载并安装第三方依赖到容器中

RUN go-wrapper download
RUN go-wrapper install

# 设置 PORT 环境变量
ENV PORT 8080

# 给主机暴露 8080 端口,这样外部网络可以访问你的应用
EXPOSE 8080

# 告诉 Docker 启动容器运行的命令
CMD ["go-wrapper", "run"]
  1. 构建镜像(这里可以使用镜像服务器,不然有点慢,但是我是没用上)
docker build -t go-mgox .
// . 是不能省略的
image
build的时候出现了Successfully build才表示成功
  1. 查看docker镜像
docker images
image
  1. 开启docker(前台方式)
    在命令行输入
docker run -p 8080:8080 hellodocker
  • docker run :运行docker镜像
  • -p 8080:8080 :将宿主机(也就是本机)的8080端口映射到容器的8080端口,此处需要先确认本机的8080端口并未被占用,否则将无法开启
  • hellodocker :镜像名(也支持id)
  1. 开启docker(后台方式)
docker run -p 8080:8080 -d hellodocker
image

说明开启成功,在浏览器中输入http://localhost:8080/,即可看到我们的返回内容

  1. 停止docker
    停止和退出docker有两种方法,一个是kill另一个是stop
  • stop :系统先发送停止信号,有充分的时间(默认10s)完成清理后再发送kill信号让容器退出
  • kill : 系统直接发送退出信号,让容器强制退出
docker stop id
或
docker kill id

删除镜像

镜像删除是一个比较复杂的操作

  1. 查询镜像
docker images
image

现在想删除第一个,ID为 ad981e05699d 的镜像。


image

从上面看出,需要先停到ID为 e4ebfe6be8d8 的容器。

  1. 查询容器
docker ps -a
image
  1. 先删除容器
docker rm 容器id
image
  1. 删除镜像
docker rmi 镜像id

image

注意点:

  1. 删除前需要保证容器是停止的 stop
  2. 需要注意删除镜像和容器的命令不一样。 docker rmi ID ,其中 容器(rm) 和 镜像(rmi)
  3. 顺序需要先删除容器

尾声

本人也作为一个初学者,很多docker的只是还有待提高。

相关文章

  • 《Docker初相见》

    什么是Docker Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。...

  • 初初相见

    初初相见 醉春风,我醉春风。初次见面,两人齐齐心动 。 《醉春风》的歌词是这样子写的。我更愿意把它稍微改一下:初初...

  • 初相见

    细雨微朦,梁柒撑着伞走在回家的路上,心里想着这次偷偷的出来怕是回去又要挨爹爹骂了,要是被爹爹知道自己是出去偷偷的见...

  • 初相见

    偶然机会遇见了简书,走近了简书,很欣喜,有一个平台可以好好释放自己,面对自己。有了孩子自己已经很久没有真正的面对自...

  • 初相见

    初相见 初相见,回眸。汝似娇羞玫瑰,转身皱眉头。大雨漂泊,忙寻伞,风不定,人初静,心想卿...

  • 初相见

    按理来说,我应该早一年上大学的,但是我没有。因为高三的叛逆,我复读了一年。 说来高三也是值得回味的一年吧!那是青春...

  • 初相见

    寂静了一个暑假,清晨的校园又热闹起来。 九年级的教学楼前,已围满了看分班的学生。孩子们叽叽喳喳的,雀跃,欢喜,对新...

  • 初相见

    兴趣使然,让我无意间知道了这个软件,让一个文学爱好者的灵魂有了寄托的地方,在这里我可以畅所欲言,对身边的事物可以...

  • 初相见

    文/Dream初心Dream 彼岸 微风掠过 稍稍 凄凄清清 繁花似锦而叶枯石烂 采拮一两片枯叶 拼成我们之间的回...

  • 初相见

    抹掉这一段记忆就像蔷薇花的芬芳从来未曾停留那黑白相片也不要再翻弄 就像初次相遇的擦肩 走吧 不要挥手去吧...

网友评论

      本文标题:《Docker初相见》

      本文链接:https://www.haomeiwen.com/subject/ydcpbxtx.html