前言

随着软件行业的发展,我们发现软件开发最麻烦的一件事儿就是环境的搭建。环境的不同,可能就会导致软件运行不起来,正如我们常说的,在我电脑上运行是好的,怎么换了一台电脑就不行了。为了解决环境的问题,于是就出现Docker。

什么是Docker

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
Docker将应用程序于该程序的以来,打包在一个文件里面。运行这个文件,就会生产一个虚拟容器。程序在这个虚拟容器里运行,就好像在真是的物理机器上运行一样。

Docker的用途

Docke主要有以下三大用途

  1. 提供一次性的环境。如:本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
  2. 提供弹性的云服务。因为Docker容器可以随开随关,很适合动态扩容和缩容。
  3. 组件微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

    Docker的安装

    由于我使用的是MacOS,故我只讲解MacOS的安装方法(若是使用其他系统的小伙伴,请参考Docker官方文档)。

  4. 打开Docker Desktop for Mac下载页面,点击 “Get Stable”按钮,下载完后,安装即可。

    image.png

  5. 在Mac应用程序中,找到Docker并打卡,然后你就会在顶部状态栏中找到Docker的运行图标。

image.png

  1. 当你点击这个图标,菜单栏显示Docker Desktop is running就说明Docker启动成功,然后你就可以在终端中使用docker相关命令了。

image.png

  1. 使用终端来验证Docker是否安装成功
    1. docker info
    2. # 或
    3. docker version

    image文件

    Docker把应用程序及其依赖,打包进image文件,只有通过这个文件,才能生产Docker容器。image文件可以看作是容器的模板。Docker根据image文件生成容器的示例。同一个image文件,可以生成多个同时运行的容器示例。
    相关命令
    1. # 列出本机所有的image文件
    2. docker image ls
    3. # 删除image文件
    4. docker image rm [imageName]

    更改镜像的源

    由于Docker默认访问的是官方的源,所以访问速度会非常的慢,所以我们就可以把官方的源修改为国内的源。 ```bash vim ~/.docker/daemon.json

在这个文件添加以下内容,即切换到清华源

{ “registry-mirrors”:[“https://docker.mirrors.ustc.edu.cn“] }

  1. 然后重启docker即可<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/715163/1597559440171-3d578413-a559-407f-875d-1c9854b1d1f8.png#align=left&display=inline&height=366&margin=%5Bobject%20Object%5D&name=image.png&originHeight=732&originWidth=538&size=356173&status=done&style=none&width=269)
  2. <a name="CtKBB"></a>
  3. # 示例:hello-world
  4. 接下来,通过运行官方的hello-world示例来体验以下Docker
  5. 1. 打开Terminal,使用docker run命令拉取hello-world镜像。
  6. ```bash
  7. docker run hello-world

image.png

  1. 启动docker中的web服务

    1. docker run --detach --publish=80:80 --name=webserver nginx
  2. 在浏览器中输入localhost就可以出现以下页面,说明web服务启动成功

image.png

容器文件

image文件生成的容器示例,本身也是一个文件,成为容器文件,也就是说,一旦容器生成,就会同时存在两个文件:image文件和container文件。而且关闭容器并不会删除容器文件,知识容器停止运行而已。

  1. # 列出本机正在运行的容器
  2. docker container ls
  3. # 列出本机所有容器,包括终止运行的容器
  4. docker container ls --all
  5. # 终止某一容器运行
  6. docker container kill [containerId]
  7. # 终止并删除容器
  8. docker container rm [containerId]
  9. # 进入某一容器的shell命令
  10. docker container exec -it [containerId] /bin/bash
  11. # 新建容器
  12. docker container start [containerId]
  13. # 停止容器
  14. docker container stop [containerId]
  15. # 查看容器日志
  16. docker container logs [containerId]
  17. # 拷贝文件到本机当前目录
  18. docker container cp [containerId]:[/path/to/file] .

参考:阮一峰的网络日志-Docker 入门教程