本文同步自微信公众号:浮世Talk(ID:fausai_talk)
相信有过编程经历的朋友都有这样的体会:为了学习一门技术去安装软件时,不仅需要根据操作系统选择版本,还要考虑所依赖的软件,完了还有各种变量配置,环境配置等
当然,这点小问题难不住聪明好学的你,但就是因为这该死的好学给你带来无限的磨难
很快你又会进行新技能的学习,巧合的是你仍然需要安装软件。随着安装的软件种类、版本增加,很可能会影响到你之前在电脑上呕心沥血配置好的其它学习环境,而你却全然不知
当你意识到这个问题的严重性,并且想要逐个问题排查、解决时,随之而来的就是无尽的痛苦。时光荏苒,斗转星移,现在我还能想起当年安装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,看到以下内容即为安装成功
虽然安装成功,但是现在的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功能
先发微软官方文档的一个截图
很明白了,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开启,点击确定
以管理员身份打开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
下载完毕,就是安装,安装过程中会出现一个下图一样的提示,如果默认打了勾,请去掉
安装成功后,电脑右下角会有docker可爱的logo在闪烁,待其闪烁完毕,docker for windows就启动成功了
先控制一下情绪,再做点配置,我们就可以使用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会自动重启
接着,在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\目录下
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数据库,尽情玩耍吧
5,总结
docker容器技术非常强大,已有无数业内的技术巨拿毫不吝啬的给予它潮水般的褒扬之词,我相信,技术嗅觉敏锐的你肯定早已有所耳闻
很多软件,如ELK、CDH等大数据产品都贴心的提供了docker镜像版本,目的就是为了能让开发者迅速的安装体验,不用把时间浪费在环境配置上,从而可以快速的评估该技术是否符合项目选型需求
在学习技术的道路上,我们拼尽全力往前走,不是为了踩更多的坑,「生命是有限的,技术的坑是无限的,用有限的生命去踩无限的坑是危险的」,如果是因为软件安装环境的问题折腾到凌晨四点,这样很不明智,也有害于健康
尽快用上docker,早点扣响真理的大门
- THE END -
扩展阅读:
Win10启用内置Linux子系统(上)
Win10启用内置Linux子系统(下)
扩展练习:
如何为docker配置国内镜像加速?