零基础超简单的Docker⼊门教程SoEasy
前提
本⽂是基于windows环境下使⽤docker的学习⽂章
其实我也有很长的⼀段时期在ubuntu系统下开发,很喜欢linux系统的纯净⽅便,但是当你⾝边同事都是使⽤windows与你交流沟通传输资料的时候,使⽤linux系统开发倒是⼀件不⽅便的事情,再加上领导曾说了⼀句你⽤windows吧别和同事们不⼀样,然后我就⼀直使⽤windows了,不过也⼀直想着回到linux系统的怀抱下,双系统虚拟机都试过,直到遇到了Docker我才意识到这不就是我⼀直寻的windows和linux完美共存的⽅案么!
Docker的官⽅概念就不说了,相关的资料很多,如果不了解那就先去⽹上了解⼀下吧,这次我将从个⼈使⽤的⾓度去⼊门Docker,初步做到会⽤,⽽不去长篇⼤论讲概念
Docker能⼲什么?
张三是个程序员,平时开发需要安装各种软件,这次开发的项⽬需要Redis,没有Docker之前张三需要先去官⽹下载Redis,然后发现官⽹没有window版本,再⼏经搜索在github到了redis for windows,然后⼜因为github⽹络的问题,缓慢下载下下来,再解压到某个⽬录,然后执⾏启动服务命令.有了Docker
之后,直接执⾏⼀条docker run命令,即可成功,另外开发中还会需要安装不同版本的mysql,如果直接装到本机上,⾸先多个mysql都可能要在系统中注册服务,配置和环境要隔离出来,卸载的时候也⽐较⿇烦,如果使⽤docker直接根据版本拉取镜像,绑定端⼝运⾏即可,不需要的时候直接删掉容器即可
李四也是程序员,平时需要在linux系统下做⼀些编译或者测试,但是因为公司的原因要装各种window独占的通讯软件,外加李四偶尔还想玩个CS:GO,所以他想在window和linux之间⽆缝切换,最⼀开始李四想到的是买两台笔电,这种想法想想就⾏了,后来⼜想到装双系统,双系统切换在于要重启太不⽅便,⼜想到装vmware虚拟机,vmware其实差不多可以满⾜李四的想法了,但是vmware太占内存了,最终李四选择了在window上使⽤Docker,需要linux的时候直接run⼀个linux系统的镜像即可,linux系统⼿到擒来,轻量快速都是vmware不可⽐的
王五还是⼀个程序员,不过他的⼯作稍多⼀些,平时需要部署项⽬在测试服务器上,没有docker之前,王五先打包然后⼿动复制到服务器上,然后进⼊对应⽬录,执⾏命令启动项⽬,有了docker之后,王五打包项⽬的时候程序就会将镜像推动到仓库中,然后通过可视化界⾯或服务器命令重新拉取重启项⽬即可,并且出现问题之后可以通过tag快速回退启动上⼀个版本,后来王五⼜偷懒了,在上边的基础集成了⾃动化,直接提交代码,服务器⾃动构建部署运⾏
林六⼜是⼀个程序员,他搭建了⼀套⽐较复杂的程序,程序依赖很多服务,同时还有很多配置,每次给别⼈演⽰安装的时候他都需要忙活半天去搭建环境,最后还不⼀定能成功,这样时候他总挠挠头说,在我机⼦上真能运⾏,有了docker之后,他把⼀系列程序通过打成⼀个docker镜像,在给别⼈演⽰的时候,只要先安装上docker,然后拉取他的镜像就可以了
以上都是docker在个⼈开发上提⾼效率的案例,我认为学习docker最好就是把docker应⽤到实际开发⽣活中来,这样才能更快更好的理解Docker,下⾯就基于windows环境开始学习如何使⽤Docker
安装Docker
系统准备
电脑性能别太差了不然毫⽆体验,检查windows版本是否为企业版或专业版,并开启Hyper-v
程序下载
Windows 10以上,去官⽹下载,⽬前Docker Desktop的体验⾮常好,Windows 10以下建议升级win10
注册docker hub的账号(仅作登录Docker Desktop使⽤),安装完成后需要登录Docker,在CMD中运⾏docker -v 出现版本号即为成功
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-Cm8rrMQN-1591522751185)
(C:\Users\caokang\AppData\Roaming\Typora\typora-user-images\image-20200603152711962.png)]
切换容器类型
下载完成后需要切换成Linux容器类型,右键docker托盘图标,选择Switch to Linux containers,因为我已经转换过了,所以这⾥是Switch to Windows containers
镜像源修改
我是⽤的是阿⾥云的镜像源,需要去阿⾥云注册账号,然后在镜像加速中查看你的加速器地址
修改源地址,右键docker托盘图标->setting->然后按照如图修改加速源,最后点击 apply&restart 即可
开始Docker
基本概念
镜像(Image):⼀个⽂件,⾥⾯存放着程序以及运⾏⽅式
容器(Container):镜像运⾏的实体
仓库(Repository):镜像仓库
标签(Tag):标识着镜像的版本
搜索镜像
镜像的查可通过docker search命令,请在window的cmd窗⼝或powershell中,不建议在git bash中使⽤,因为在git bash中会有错误提⽰
C:\Users\xxxx>docker search redis
NAME                            DESCRIPTION                                    STARS              OFFICIAL            AUTOMATED
redis                            Redis is an open source key-value store that…  8245                [OK]
bitnami/redis                    Bitnami Redis Docker Image                      147                                    [OK]
sameersbn/redis                                                                  80                                      [OK]
grokzen/redis-cluster            Redis cluster 3.0, 3.2, 4.0, 5.0, 6.0          68
mysql下载完如何使用......
然后可以根据DESCRIPTION通过NAME选择镜像,推荐下载第⼀个,⼀般都是官⽅源
关于镜像的下载: 启动⼀个镜像的时候,如果镜像不存在,则会先进⾏pull(下载)操作,你也可以主动pull,这样docker会把镜像下载本机,启动的时候则⽆需再次下载
docker pull redis
安装Redis
docker run -d --name redis -p 6379:6379 redis
run 创建⼀个新的容器并运⾏⼀个命令
-d 后台运⾏容器,并返回容器ID,如果不加这个,程序将以前台启动,⼀旦关闭程序也将⾃动关闭
–name 给容器指定⼀个名称,建议加,⽅便以后维护
-p 使⽤⽅法: [-p 宿主机端⼝:容器内端⼝] 说明: 指定端⼝映射,因为默认情况下容器的⽹络与宿主机不互通,通过该参数可把redis的6379端⼝映射到本机6379端⼝上
安装两个Mysql
mysql5.6
C:\Users\xxxxx>docker search mysql
NAME                              DESCRIPTION                                    STARS              OFFICIAL            AUTOMATED
mysql                            MySQL is a widely used, open-source relation…  9587                [OK]
mariadb                          MariaDB is a community-developed fork of MyS…  3486                [OK]
mysql/mysql-server                Optimized MySQL Server Docker images. Create…  702                       
            [OK]
centos/mysql-57-centos7          MySQL 5.7 SQL database server                  76
mysql/mysql-cluster              Experimental MySQL Cluster Docker images. Cr (69)
centurylink/mysql                Image containing mysql. Optimized to be link…  61                                      [OK]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。