十分钟入门Docker,带你成为Docker王者之篇一

2,776 阅读4分钟

不啰嗦,不废话,写代码,一把梭,干就完了。

为啥写这几篇文章,主要是解决以下两个问题,不知道大家是否遇到过没有?

  1. 小伙伴在日常开发或者看书学习中,肯定听说过Docker 这个词。卧槽,这是啥?是干啥的?为啥大家都说它牛逼?
  2. 在实际的开发中,有没有遇到这种困扰:你本地搭建的环境好好的,但是换一台机器重新搭环境,就可能出现各种千奇百怪的问题;或者让你的小伙伴运行你的程序,他那边又会出来各种你都没见过的诡异bug。

那么,基于以上两点,皮爷给大家用四五篇短文章来说一下Docker怎么玩,争取用最简单,最简短,最通俗易懂的姿势来让你快速上手,完全可以应付工作和了解后入自己应该如何深入学习。

在文章开头先给大家列出来我们的目标:

  • 会安装Docker,并且能跑起来Docker。【青铜等级
  • 学会找镜像(Image),学会运行和管理镜像(Image)和容器(Container)。【白银等级
  • 学会创建自己的镜像,并且分享给他人使用。【黄金以上
  • 学会使用docker-compose来一次性启动多个镜像。【铂金钻石

就先给大家搞到铂金水平吧。因为倒了铂金水平,就完全可以自己放手玩王者了,呃,不对,是Docker。所以,我们赶紧开始教学吧。

Docker 是啥?

网上的那些官话我也不想多说,什么容器啊镜像啊之类的。皮爷在这里给初学者举两个简单形象的例子,你就会立刻明白Docker是啥了。

  1. Docker就像是你电脑里面安装了一个冰箱,这个冰柜提供制作形状各异的雪糕模具(这个就是镜像Image),然后你可以用这些模具来制作各种各样的雪糕(雪糕也就是container)。做出来的雪糕,支持访问,可以查看雪糕内部的各种结构。
  2. 通过Docker,你可以将自己的雪糕模具给了其他的小伙伴或者上传到网上,然后其他的小伙伴可以用你的模具,在他的电脑里面的冰柜(Docker)中,就可以制作出来和你的一模一样的雪糕。

理解起来简单不?这样的解释骚不?这里完全是为了给初学者刻画一下Docker的轮廓是啥,不做具体深入的原理讲解。如果有想要深入了解原理的同学,建议去官方文档学习:

https://www.docker.com/resources/what-container

【青铜】安装Docker和Docker-compose

Docker可以在不同的系统里安装:windows,Linux和Mac OS。这里就简单的和大家说一下安装步骤。

Ububtu 安装 Docker

参考地址:

https://docs.docker.com/v17.12/install/linux/docker-ce/ubuntu/

安装Docker:

# step 0: 首先检查系统中是否已经安装了Docker:$ docker --version# step 1: 如果没有安装,依次输入一下命令:$ sudo apt update$ sudo apt install docker.io# step 2: 之后就可以再次检查Docker版本:$ docker --versionDocker version 18.09.7, build 2d0084d

出现上面最后一行字就代表安装Docker成功了。

接下来,安装Docker-compose。

参考地址:

https://docs.docker.com/compose/install/

# step 0: 检查系统中是否已经安装了Docker-compose$ docker-compose --version# step 1: 执行以下命令安装docker-compose$ sudo apt install docker-compose# step 2: 安装成功之后,检查一下Docker-compose版本$ docker-compose --versiondocker-compose version 1.8.0, build unknown

出现上面一行字,就代表Docker-compose安装成功了。

CentOS 安装 Docker

参考地址:

https://docs.docker.com/v17.12/install/linux/docker-ce/centos/

安装Docker:

# step 0: 安装必要的一些系统工具$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2# Step 1: 添加软件源信息$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# Step 2: 更新并安装Docker-CE$ sudo yum makecache fast$ sudo yum -y install docker-ce# Step 3: 开启Docker服务$ sudo service docker start

安装Docker-compose可以参考:https://docs.docker.com/compose/install/

# step 1$ sudo curl -L https://github.com/docker/compose/releases/download/[版本号]/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose# step 2$ sudo chmod +x /usr/local/bin/docker-compose# step 3: 安装完成后,查看版本$ docker-compose version

Windows 和 Mac 安装Docker:

由于Windows和Mac均采用安装包的形式安装,属于傻瓜安装,这里就不多说了。只不过这两个系统都有最低要求,一定要看好,

最低要求

  • Windows最低是Windows 10
  • Mac 最低是 macOS El Capitan 10.11

具体的安装可以参考:
Mac:

https://docs.docker.com/v17.12/docker-for-mac/install/

Windows:
https://docs.docker.com/v17.12/docker-for-windows/install/

检查版本:

$ docker versionClient: Docker Engine - Community Version:           18.09.2 API version:       1.39 Go version:        go1.10.8 Git commit:        6247962 Built:             Sun Feb 10 04:12:39 2019 OS/Arch:           darwin/amd64 Experimental:      falseCannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

咋运行Docker?

首先不确定Docker是否启动,可以通过docker ps命令来看一下docker是否已经启动:

$ docker ps# 未启动长这个样子Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?# 启动就会列出来运行的实例(因为这里没有跑实例,所以是空的)CONTAINER ID    IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES

如果发现Docker没有启动,则需要先启动Docker:

CentOs:$ sudo systemctl start dockerWindows和Mac OS则需要启动 Docker Desktop

启动之后,我们直接运行 docker run hello-world 看看:

可以看到Docker完美启动,这个时候 docker ps -a 可以看到已经停止的容器:

好的,目前 Docker 的只是这一篇就先说这么多,在接下来的文章里,皮爷会给大家讲 Docker 的更过常用命令和使用方法。

作业小练手

如果你已经成功安装好了 Docker,不妨试一试皮爷的 Docker Image 跑起来的效果:

$ docker run swyftg/3dmspider

如果遇到报错:

Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

这个问题可能是因为你的电脑开了威屁嗯,梳理一下你的网络,然后再重启一下 Docker 就可以了。

大家可以试一下,看看跑起来会出现什么结果?
下一篇文章,皮爷主要给大家讲一下在 Docker 中怎么找 Image,怎么运行和管理 Container 和 Image。

喜欢的可以关注公号『皮爷撸码』,回复『代码』,其中 DC001 就是 Docker 系列的代码,大家可以学习一下。