相信有过编程经历的朋友都有这样的体会:为了学习一门技术去安装软件时,不仅需要根据操作系统选择版本,还要考虑所依赖的软件,完了还有各种变量配置,环境配置等

当然,这点小问题难不住聪明好学的你,但就是因为这该死的好学给你带来无限的磨难

很快你又会进行新技能的学习,巧合的是你仍然需要安装软件。随着安装的软件种类、版本增加,很可能会影响到你之前在电脑上呕心沥血配置好的其它学习环境,而你却全然不知

当你意识到这个问题的严重性,并且想要逐个问题排查、解决时,随之而来的就是无尽的痛苦。时光荏苒,斗转星移,现在我还能想起当年安装Oracle时惨痛的经历…

除了在我们学习中遇到安装配置的麻烦之外,在公司生产服务器中,这种问题的严重性更加突出,归根到底还是我们对软件安装管理的方式出了问题,导致服务器系统越用越乱,最后一团糟

解决这个问题,首先我们需要一台干净的服务器,并且尽可能的一直保持它干净

声名显赫的docker,就能很好的解决这个问题。关于docker,网上很多资料介绍,从概念、原理、源码甚至哲学思想层面,可谓面面俱到,这里简单的说明一下即可

  • docker是一款开源的软件管理工具,它包括了一个命令行客户端程序、一个后台守护进程,以及一组远程服务
  • 它提供了一种在容器中运行安全隔离的应用程序的方法,能快速解决如安装、配置、运行、发布、升级、卸载等软件管理问题
  • docker专注解决软件管理问题,让你专注于高价值的事

 

你可以在官方文档中了解更多关于docker的信息:https://docs.docker.com/

用docker管理你的软件,首先得有docker,docker最好的安装环境是ubuntu/centos/RedHat,我的电脑是Win10家庭版操作熊,启用了内置的Linux子系统(wsl),先就一步步演示如何在wsl上安装docker。

1,在wsl上安装docker

首先卸载掉ubuntu中可能存在的旧版本docker,执行以下命令

sudo apt-get remove docker docker-engine docker-ce docker.io

然后执行以下命令,等待片刻即可安装完毕

sudo apt-get update
sudo apt-get install docker.io & y

当上面步骤执行成功后,执行以下命令启动docker

1gavin@ZCG04000023:~$ sudo service docker start
 2[sudo] password for gavin:
 3 * Starting Docker: docker                                   [ OK ]
 4gavin@ZCG04000023:~$

docker启动成功,输入docker version,看到以下内容即为安装成功

linux安装docker 指定版本 linux系统安装docker_操作系统

虽然安装成功,但是现在的docker是不能用的,细心的你可能看到docker输出了这个提示:

Cannot connect to the Docker daemon at tcp://127.0.0.1:2375. Is the docker daemon running?

daemon(守护进程)是docker的重要组成部分,用于监听客户端的请求,它运行在2375这个端口,由于目前wsl还不支持docker的守护进程,所以出现Is the docker daemon running?这个提示,我们可以安装docker for Windows来解决这个问题

安装docker for Windows的前提是,你的电脑要打开Hyper-V功能

2,启用Windows Hyper-V功能

先发微软官方文档的一个截图

linux安装docker 指定版本 linux系统安装docker_运维_02

很明白了,Win10家庭版不支持Hyper-V功能,如果你的电脑是专业版、企业版或者教育版,可以忽略这节内容,直接到控制面板->程序和功能->启用或关闭Windows功能将Hyper-V开启,如果你用的是家庭版,继续看下去,我们愉快的踩坑吧

1,在一个目录(例如D:\tmp)下新建一个脚本,例如hyper-v.cmd,输入以下内容

pushd "%~dp0"
 dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
 for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
 del hyper-v.txt
 Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

保存,接着选中hyper-v.cmd脚本右键,以管理员身份运行,运行完毕,会提示你重启电脑

电脑重启完毕,到控制面板->程序和功能->启用或关闭Windows功能将Hyper-V开启,点击确定

linux安装docker 指定版本 linux系统安装docker_运维_03

以管理员身份打开cmd,运行以下命令,该命令把你电脑伪装成专业版

REG ADD "HKEY_LOCAL_MACHINE\software\Microsoft\Windows NT\CurrentVersion" /v EditionId /T REG_EXPAND_SZ /d Professional /F

3,安装docker for Windows

可以到官网下载docker for Windows,速度还是相当快的,如不嫌弃,我呈上百度网盘里收藏的一份

官网地址:https://docs.docker.com/docker-for-windows/release-notes/
网盘链接:https://pan.baidu.com/s/1C_k7VzsJ33J72raF1fJOxQ 提取码:lxjk

下载完毕,就是安装,安装过程中会出现一个下图一样的提示,如果默认打了勾,请去掉

linux安装docker 指定版本 linux系统安装docker_网络_04

安装成功后,电脑右下角会有docker可爱的logo在闪烁,待其闪烁完毕,docker for windows就启动成功了

linux安装docker 指定版本 linux系统安装docker_网络_05

先控制一下情绪,再做点配置,我们就可以使用docker了

回忆上面在wsl上运行docker version时看到的提示

Cannot connect to the Docker daemon at tcp://127.0.0.1:2375. Is the docker daemon running?

现在我们可以解决它了,右键电脑右下角docker的logo,点击settings,在弹出的界面中,进行下图操作,docker会自动重启

linux安装docker 指定版本 linux系统安装docker_运维_06

接着,在wsl的命令行中输入vim .bashrc,打开bashrc文件,在文件末尾添加以下内容

export DOCKER_HOST=tcp://127.0.0.1:2375

保存,退出,重新启动命令行,再次输入docker version,就发现没有那个提示了


1gavin@ZCG04000023:~$ docker version
 2Client:
 3 Version:           18.09.5
 4 API version:       1.39
 5 Go version:        go1.10.4
 6 Git commit:        e8ff056
 7 Built:             Thu May  9 23:11:19 2019
 8 OS/Arch:           linux/amd64
 9 Experimental:      false
 10Server: Docker Engine - Community
 11 Engine:
 12  Version:          18.09.2
 13  API version:      1.39 (minimum version 1.12)
 14  Go version:       go1.10.6
 15  Git commit:       6247962
 16  Built:            Sun Feb 10 04:13:06 2019
 17  OS/Arch:          linux/amd64
 18  Experimental:     false

到目前为止,docker在你的wsl中能成功的运行啦,需要注意的一点是,docker for Windows安装默认会把docker下载的镜像文件放在系统盘下,如果你的系统盘空间比较紧张,建议你在没用使用docker之前,把放置镜像文件的目录改到其它盘

右键电脑右下角docker的logo,点击settings,选中Advanced,将image location改到你需要的目录,例如我改到D:\Hyper-V\Virtual Hard Disks\目录下

linux安装docker 指定版本 linux系统安装docker_运维_07

4,快速体验docker

历经艰辛,我们终于把docker在wsl中安装成功了,你是不是已经跃跃欲试啦,来,让我们肆无忌惮的使用docker吧

从我们熟悉的mysql开始来快速体验docker

如果你不懂docker语法,可以忽略以下命令的细节,直接围观,感受一下docker的威力即可

执行docker pull mysql命令,docker将会从远程镜像仓库中将mysql镜像下载

1gavin@ZCG04000023:~$ docker pull mysql
 2Using default tag: latest
 3latest: Pulling from library/mysql
 4fc7181108d40: Downloading [==========================>                        ]  11.73MB/22.49MB
 5787a24c80112: Download complete
 6a08cb039d3cd: Download complete
 74f7d35eb5394: Download complete
 85aa21f895d95: Download complete
 9a742e211b7a2: Downloading [===========================================>       ]  10.51MB/12.11MB
 100163805ad937: Download complete
 1187f18876c3ff: Waiting
 1278082f25f167: Waiting
 130a510f055c17: Waiting
 14312b0999e433: Waiting
 15f864cfdc0264: Waiting

待下载解压完毕,执行docker images命令查看我们的docker镜像

1gavin@ZCG04000023:~$ docker images
 2REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
 3mysql                      latest              a522071a8cc3        20 hours ago        443MB

话不多说,执行以下命令,即可运行我们的mysql容器

docker run -d --name mysql --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql

执行以下命令,进入mysql容器

docker exec -it mysql /bin/bash

现在,让我们像平时一样,用最熟悉的方式登录mysql数据库,尽情玩耍吧

linux安装docker 指定版本 linux系统安装docker_运维_08

5,总结

docker容器技术非常强大,已有无数业内的技术巨拿毫不吝啬的给予它潮水般的褒扬之词,我相信,技术嗅觉敏锐的你肯定早已有所耳闻

很多软件,如ELK、CDH等大数据产品都贴心的提供了docker镜像版本,目的就是为了能让开发者迅速的安装体验,不用把时间浪费在环境配置上,从而可以快速的评估该技术是否符合项目选型需求

在学习技术的道路上,我们拼尽全力往前走,不是为了踩更多的坑,「生命是有限的,技术的坑是无限的,用有限的生命去踩无限的坑是危险的」,如果是因为软件安装环境的问题折腾到凌晨四点,这样很不明智,也有害于健康

尽快用上docker,早点扣响真理的大门