不啰嗦,不废话,写代码,一把梭,干就完了。
为啥写这几篇文章,主要是解决以下两个问题,不知道大家是否遇到过没有?
- 小伙伴在日常开发或者看书学习中,肯定听说过Docker 这个词。卧槽,这是啥?是干啥的?为啥大家都说它牛逼?
- 在实际的开发中,有没有遇到这种困扰:你本地搭建的环境好好的,但是换一台机器重新搭环境,就可能出现各种千奇百怪的问题;或者让你的小伙伴运行你的程序,他那边又会出来各种你都没见过的诡异bug。
那么,基于以上两点,皮爷给大家用四五篇短文章来说一下Docker怎么玩,争取用最简单,最简短,最通俗易懂的姿势来让你快速上手,完全可以应付工作和了解后入自己应该如何深入学习。
在文章开头先给大家列出来我们的目标:
- 会安装Docker,并且能跑起来Docker。【青铜等级】
- 学会找镜像(Image),学会运行和管理镜像(Image)和容器(Container)。【白银等级】
- 学会创建自己的镜像,并且分享给他人使用。【黄金以上】
- 学会使用docker-compose来一次性启动多个镜像。【铂金钻石】
就先给大家搞到铂金水平吧。因为倒了铂金水平,就完全可以自己放手玩王者了,呃,不对,是Docker。所以,我们赶紧开始教学吧。
Docker 是啥?
网上的那些官话我也不想多说,什么容器啊镜像啊之类的。皮爷在这里给初学者举两个简单形象的例子,你就会立刻明白Docker是啥了。
- Docker就像是你电脑里面安装了一个冰箱,这个冰柜提供制作形状各异的雪糕模具(这个就是镜像Image),然后你可以用这些模具来制作各种各样的雪糕(雪糕也就是container)。做出来的雪糕,支持访问,可以查看雪糕内部的各种结构。
- 通过Docker,你可以将自己的雪糕模具给了其他的小伙伴或者上传到网上,然后其他的小伙伴可以用你的模具,在他的电脑里面的冰柜(Docker)中,就可以制作出来和你的一模一样的雪糕。
理解起来简单不?这样的解释骚不?这里完全是为了给初学者刻画一下Docker的轮廓是啥,不做具体深入的原理讲解。如果有想要深入了解原理的同学,建议去官方文档学习:
【青铜】安装Docker和Docker-compose
Docker可以在不同的系统里安装:windows,Linux和Mac OS。这里就简单的和大家说一下安装步骤。
Ububtu 安装 Docker
参考地址:
安装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。
参考地址:
# 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
参考地址:
安装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:
Windows:
检查版本:
$ 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 就可以了。
喜欢的可以关注公号『皮爷撸码』,回复『代码』,其中 DC001 就是 Docker 系列的代码,大家可以学习一下。