0%

初识Docker

什么是Docker

Docker 是DotCloud于2013年开源的内部项目,docker是用go语言编写的一个开源的应用容器引擎

有哪些竞品?

Docker核心概念

Docker的核心就是:镜像、容器和仓库

在我的理解上,一直把Docker镜像理解为我们编译后的一个APP,可以直接在特定的环境中运行,而在这个特定环境中运行起来的APP,就是上面所提到的容器,当然我们会有很多不同的APP会被创建出来,这些APP会被集中在应用分发中心供大家挑选使用,这个分发中心也就是我们这里的Docker仓库的概念了

使用场景

  • 持续集成/发布(CI/CD):有流行的dronejenkins等工具
  • 应用隔离:因为Docker“轻”的这个特点,我们可以把每个应用就部署到自己单独的Docker容器中,这样一来,各个应用之间相互隔离,环境也各不影响,Nginx一个Docker容器,MySQL一个Docker容器,API服务一个容器…你看,多方便
  • 自动化打包
  • 快速部署
  • 自动化测试

牛刀小试

安装Docker基础环境

一般自己试着玩或者学习使用Docker-CE就足够了,顾名思义,也就是Docker的社区版,类似于宇宙最强IDE Visual Studio的社区版一样,安装方式Docker官方文档中给的比较详细,本文也就不再班门弄斧了

Dockerfile的编写

下面这个示例是一个应用的示例,原始仓库在这里,这里第一句就是基础镜像,可以看到我们使用的是ubuntu 18.10这个基础的操作系统,然后把当前文件夹下的apigo文件,也就是编译好的文件复制到了对应的ubuntu系统中,再之后也把配置文件也复制了进去(这里说一下,如果有两个参数的命令,第一个是本机,第二个参数是对应的镜像),接着暴露8002端口后直接运行我们的应用

1
2
3
4
5
FROM ubuntu:18.10
COPY ./apigo ./apigo
COPY ./config/config.default.toml ./config/config.toml
EXPOSE 8002
CMD ["./apigo"]

镜像的构建

构建镜像时在命令行中进到我们Dockerfile所在的文件夹下(当然也可以特别指定Dockerfile的路径),然后使用如下命令进行构建注意后面有个.,参数中的-t就是给我们的镜像起名字的作用,官方文档中有更多关于其它编译参数的说明

1
docker build -t <name>[:<tag>] .

运行镜像

我们大多数人运行的第一个docker容器都是docker hello word,在安装好Docker基础环境之后,官方文档中让我们测试是否正确安装的命令也是在教我们运行第一个Docker容器 – sudo docker run hello-world,除此之外,运行时还可以进行加一些其它的参数来进行,如-v是关联宿主机的fs,–rm是stop后立即删除,–name是给container起个别名,毕竟每次要操作container的时候使用输入id还是太麻烦了,这样的参数还有很多,官方文档里有详细的解释说明

其它

  • 容器编排
  • Docker容器间通信
    • link
    • connect
    • DNS Server
    • join

参考