Docker 学习笔记(第一集:认识docker)

docker 介绍

docker 这个东西应该做开发的应该都有听说过,但是不知道大家有没有详细的了解过。反正我是属于听说过,大概知道是个什么东西,能特别简单的使用。但是一直没有深入的学习过,今天在这里我想把学习 docker 的过程记录下来,方便日后查找。

那么下面开始啦。~

为啥要使用 docker

在我电脑上运行的是正常的啊?怎么到了别人的电脑上就不能正常运行了呢?

如果你也碰到上面的问题了,那么请你也开始 docker 的学习吧。这个时候有人会说为啥不用虚拟机呢,因为虚拟机是完全模拟一台正常运行的。就算你只是需要运行一个 php 的环境,那么系统默认的一些其他进程也是会启动的,这样就会降低我们电脑的利用率。还有一点就是虚拟机一般是不能再生产环境中使用的。但是 docker 没有问题。总而言之一句话,虚拟机不好,我们要用 docker 。

docker 的用途

  1. 提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。

  2. 提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。

  3. 组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

docker 的安装

docker 分为社区版(CE)、企业版本(EE)

win 和 mac 安装很简单,就是正常的安装软件的方法,而用能用 linux 系统的,相信你也有办法找到安装的方法的。

安装完成之后使用如下命令验证是否安装成功


$ docker version

# 或者

$ docker info

Docker 需要用户具有 sudo 权限,为了避免每次命令都输入sudo,可以把用户加入 Docker 用户组


$ sudo usermod -aG docker $USER

使用如下命令启动 docker


# service 命令的用法

$ sudo service docker start

# systemctl 命令的用法

$ sudo systemctl start docker

第一个实例 hello world


$ docker container run hello-world

如果运行成功,你会在屏幕上读到下面的输出。


$ docker container run hello-world

Hello from Docker!

This message shows that your installation appears to be working correctly.

... ...

上面命令的过程就是:

  1. 从 docker 的官方仓库拉取 hello world image 文件到本地

  2. 使用 image 文件 生成 容器文件

  3. 运行 hello world 容器 —> 输出相关内容 —> 容器自动终止(有些容器不会自动终止,因为提供的是服务。比如,安装运行 Ubuntu 的 image,就可以在命令行体验 Ubuntu 系统。)

通过上面的实例大概知道了 docker 的是怎么回事了。主要就是需要明白两个文件,image文件和容器文件。接下来我们制作一个 image 文件,并通过该文件生成容器并运行。

制作自己的 docker 容器

  1. 新建一个目录

$ mkdir hello && cd hello
  1. 在目录中新建 .dockerignore 文件(该文件类似于 git 项目中的 .gitignore 文件)

  2. 在目录中新建 Dockerfile 文件,内容如下所示

  1. 运行命令,进行 image 的构建

$ docker build -t nginx:v1 .

看到如下内容则表示 image 构建成功。

  1. 通过 image 文件生成容器文件

$ docker run --name webserver -p 9527:80 nginx:v1
  1. 通过浏览器访问 localhost:9527,如果可以看到如下内容则成功

一个简单的容器就完成了。通过这个例子我们可以大概了解 docker 的配置,运行, 后面会深入 docker 相关的概念进行学习,并定下第一个计划 ———— 配置一个属于自己的 LNMP docker 测试环境。

程序员的艺术人生

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!