前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第一章 Docker环境搭建

第一章 Docker环境搭建

原创
作者头像
Librant
修改2018-12-20 00:03:06
2.6K1
修改2018-12-20 00:03:06
举报
文章被收录于专栏:跟我一起学 K8s跟我一起学 K8s

学习Docker,免不了的就是搭建环境了。搭建环境是一个复杂的工程,而且还是相当费时间的,不过话又说回来了,磨刀不误砍柴工嘛,光有理论是不够的,还需要自己动手实践才行。

在学习Docker之前,最好能熟练掌握一门编程语言,如果想深究Docker的深层次原理,这里建议最好学习下Go语言,毕竟Docker就是用Go语言编写的嘛,后续的Kubernetes也是用Go语言编写的。就我个人来说,Go语言还是要比C/C++容易上手的,如果你还是在校的学生,恰巧又看到了这本书的话,那说明你对容器技术还是有一定好奇心的,这是好事,接下来你就可以选择Go语言作为你深耕的编程语言啦。虽然说现在python语言比较火,这得益于近年来机器学习,人工智能的兴起。不过也不要难过,Go版本的tensorflow也已经在路上了,相信不久的将来,Go也可以在深度学习领域发出自己的光和热。

1.1 VMware安装

目前docker在windows系统支持的并不好,但是我们大多数的主机都装的是windows系统,这样我们可以通过虚拟机软件VMware安装我们需要的Linux环境。VMware公司是全球云基础架构和移动商务解决方案厂商,更多关于此公司的详细信息留给读者自行谷歌和百度。

在安装软件之前那就是下载软件,可以登录官网下载(下载链接:https://my.vmware.com/cn/web/vmware/info/slug/desktop_end_user_computing/vmware_workstation_pro/14_0

),编写本书时,下载的版本为 VMware-workstation-full-14.1.3-9474260.exe,需要注意的是,在安装比较高版本的Linux镜像的时候,需要VMware的版本比较高,否则会产生兼容问题,因此建议大家下载最新版本用于后续的学习使用。VMware安装,网上的教程比较多,基本来说,按照默认的配置基本就能安装成功。

1.2 Ubuntu-18.04安装

在虚拟机安装完成之后,就可以安装我们的Linux镜像软件了,目前的Linux版本比较多,像Ubuntu、Centos、Redhat、EulerOS等等,支持Docker的镜像是有要求的,Docker依赖Linux的Namespcae和Cgroup两个特性,因此需要内核的版本最少在3.10以上,本书选择对Docker支持比较好的Ubuntu-18.04用于学习和研究,其内核版本为4.15.0-29-generic。

Ubuntu-18.04的ISO镜像文件可以从Ubuntu的官网进行下载(下载链接:http://cdimage.ubuntu.com/releases/18.04/release/),在下载镜像的时候,推荐下载离线版的镜像,在线版的镜像需要连接网络才能完成安装,而我们大多的时候安装镜像时网络还没有打通,会导致安装失败,在线版的镜像文件名中带有live字样(ubuntu-18.04.1-live-server-amd64.iso),为了便于安装,下载的是离线版本的镜像(ubuntu-18.04.1-server-amd64.iso)。这里还需要再啰嗦一下,个人认为安装server版本已经足以满足我们的需求了,并且全程操作也无需用到桌面,因此建议不安装desktop版本,毕竟我们的镜像是运行在虚拟机中,启动桌面系统本身就比较耗费性能,会对我们的宿主机提出更高的要求。

镜像下载完成后,就可以用VMware安装我们下载好的镜像文件了,这种教程网上也比较多,在设置虚拟机的规格时,最好根据宿主机的规格进行选择,一般设置2C4G60G的规格就足够用了的。虚拟机上有三种网络模式可以选择,分别是桥接模式,NAT模式和仅主机模式,在网络设置时。将网络连接选择NAT的方式连接(虚拟机--》设置--》网络适配器),这样如果主机能够正常上网,那么虚拟机也能够直接上网,如果主机能上网,虚拟机不能上网,请关闭主机的防火墙。

安装完成后的界面如图1-2-1所示:

图1-2-1 Ubuntu安装后的界面
图1-2-1 Ubuntu安装后的界面

此安装的镜像是一个比较干净的系统,由于很多软件都需要后期进行安装,大部分是在root用户下进行安装,但是Ubuntu系统默认是没有设置root用户密码,因此需要root用户设置密码,方便登陆。

设置Ubuntu系统的root密码:(安装时创建的用户名为: librant)

librant@ubuntu:~$ sudo passwd

输入想设置的密码即可。密码设置完成后,切换到root用户下。

librant@ubuntu:~$ su -

通过启动界面可以看到,进入到ubuntu系统中,系统的默认的终端字体比较小,我们可以通过如下命令进行设置:

root@ubuntu:~# dpkg-reconfigure console-setup

弹出如图1-2-2的界面:

图 1-2-2 终端字体设置界面
图 1-2-2 终端字体设置界面

可以根据自己的喜好设置终端的字体大小,推荐选择UTF-8 --> Latin1 and Latin5 --> Let the system select a suitable font --> 12X24。

当我们想停止或者启动console-setup服务的时候,可以通过以下命令:

root@ubuntu:~# /etc/init.d/console-setup {start|reload|restart|force-reload|stop}

1.3 环境配置

1.3.1 配置虚拟机的共享目录

配置共享目录可以在主机和虚拟机之间共享目录,使用NFS文件系统。虚拟机设置界面如图1-3-1所示:

图 1-3-1 共享目录设置界面
图 1-3-1 共享目录设置界面

首先在windows主机中新建一个准备共享的文件夹(E:\shared_lsf),然后在 虚拟机 --> 设置 --> 选项 --> 共享文件夹 进行设置Ubuntu系统中文件夹设置(shared_lsf),设置成功后,可以在 /mnt/hgfs/ 目录下看到之前设置的共享目录。

1.3.2 相关系统软件安装

考虑到离线软件安装比较繁琐,建议在联网的情况下安装软件。首先使用ping命令测试下网络的连通性(ping www.baidu.com),如果不能ping通,需要检查下网络的相关配置。网络配置成功后,当我们准备使用ifconfig查看当前的IP地址时,很遗憾系统中还没有安装,根据终端的出错提示,可以用如下命令进行安装:

root@ubuntu:/# apt-get install net-tools

如果读者和我是一样的环境配置,会报Media change: please insert the disc labeled的错误,主要是因为系统中的没有挂载CDROM,解决方案可以将 /etc/apt/sources.list 中cdrom源注释掉,建议增加新的源地址(https://launchpad.net/ubuntu/+archivemirrors),文件修改如图1-3-2所示:

图 1-3-2 文件修改
图 1-3-2 文件修改

修改完成后并保存,然后执行:apt-get update更新源,然后就可以愉快的进行软件的安装啦。

1.3.3 配置SSH服务

配置SSH服务后,就可以远程连接服务器。首先查看当前环境下的SSH服务的状态:

root@ubuntu:/# service sshd status

如果出现 Loaded: error (Reason: No such file or directory) 提示的话,说明没有安装ssh服务,如果出现 Active: inactive (dead) 提示信息,则说明已经安装了SSH服务,只是没有开启而已。

1)安装SSH服务

root@ubuntu:~# apt-get install openssh-server

2)配置Open SSH:

root@ubuntu:~# vi /etc/ssh/sshd_config

配置如图1-3-3所示:

图 1-3-3 配置SSH服务
图 1-3-3 配置SSH服务

3)开启SSH服务

root@ubuntu:~# service sshd start

4)卸载SSH服务

root@ubuntu:~# apt-get –purge remove sshd

5)使用SSH服务

在网络连通的终端中使用:ssh  username@IP

输入密码就可以登录成功。

1.4 XShell安装

XShell是一款强大的安全终端模拟软件,模拟了远程主机的操作,其实质就是通过访问和连接到远程主机,在本地实现对远程主机的操作。成功配置SSH后,就可以使用XShell软件连接虚拟机中的Ubuntu系统,比虚拟机中自带的方便很多。

XShell软件可以去官网下载(下载链接:https://xshell.en.softonic.com/download),本次下载的版本是:Xshell-6.0.0107p.exe,安装过程比较简单,使用也比较简单,这里就不再啰嗦了。在连接之前,可以设置下终端中的显示字体和大小(文件 --> 属性 --> 外观 --> 字体)。

在使用XShell登陆之前,首先需要将虚拟机中的Ubuntu系统运行起来,然后就可以通过SSH登陆,登陆成功后的界面如图1-4-1所示:

图 1-4-1 XShell登陆Ubuntu系统界面
图 1-4-1 XShell登陆Ubuntu系统界面

1.5 Git安装

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。作为版本控制的优秀软件代表,个人认为确实比SVN好用,在我司大部分的部门已经都在使用Git,不过还有很多部门在使用SVN。当版本越来越多的时候,需要将发现的一个问题合入到之前的版本,SVN需要将所有需要修改的分支都下载到本地,然后一个分支一个分支的修改,相当的麻烦。Git的使用还是比较简单的,这里推荐《廖雪峰的官方网站》中的Git教程。学习Docker,Git是必不可少的工具,也是拉取github上代码的利器。

Git软件可以从官网下载(下载链接:https://mirrors.edge.kernel.org/pub/software/scm/git/),安装有两种方式,在线安装和源码安装。在线安装需要联网,如果不能联网,就只能将源码下载下来安装了。强烈建议在联网环境下安装相关软件,方便快捷,还不容易出错。

在线安装可以使用以下命令:

root@ubuntu:~# apt-get install git

安装完成后,查看当前的Git版本号:

root@ubuntu:~# git --version

git version 2.17.1

如果觉得Git的命令行模式比较麻烦,也可使用可视化的lazygit工具,具有添加文件轻松,merge冲突处理,分支切换方便,快速commit/pull/push的特点,安装方法在安装完Go编译器后进行介绍。启动界面如图1-5-1所示:

图 1-5-1 lazygit启动界面
图 1-5-1 lazygit启动界面

lazygit工具使用也是非常的简单,常用的命令也不是很多,比命令行的方式简单,需要在git仓库中才能使用,否则会报错。lazygit的操作如图1-5-2所示:(选中对应的方框,然后按 x 键弹出菜单面板)

图 1-5-2 lazygit 部分操作命令
图 1-5-2 lazygit 部分操作命令

1.6 Go安装

Go语言是谷歌公司2009发布的第二款开源编程语言。前面已经提过,Docker就是用Go语言编写的,如果想探究Docker的深层次原理,Go编译器是必要的,并且Go编译器也已经完全由Go语言编写了。由于伟大的强的存在,我们不能访问到Go的官方网站,也就不能像Git那样用一条命令搞定,只能选择二进制方式安装,这种方式是使用已经编译好的二进制命令,直接拷贝到环境变量对应的目录中即可使用。

Go编译器官方下载地址(https://golang.org/dl/),一般是访问不了,可以直接去Golang中国的网站下载(下载链接:https://golang.google.cn/dl/),目前已经更新到1.11.2版本,选择Linux环境版本的下载(go1.11.2.linux-amd64.tar.gz),然后就可以进行安装啦。

Go软件安装过程如下:

1)解压软件包

root@ubuntu:/mnt/hgfs/shared_lsf/tools# tar -zxf go1.11.2.linux-amd64.tar.gz

解压完成后会在当前目录下生成 go 目录。

2)拷贝目录

root@ubuntu:/mnt/hgfs/shared_lsf/tools# cp -r go /usr/local/

3)配置环境变量PATH

root@ubuntu:/mnt/hgfs/shared_lsf/tools# vim /etc/profile

在文件的末尾增加:

GO_HOME=/usr/local/go

export GOROOT=/usr/local/go

export PATH=${PATH}:${GO_HOME}/bin

使用source命令重新生效环境变量:

root@ubuntu:/mnt/hgfs/shared_lsf/tools# source /etc/profile

4)配置GOPATH变量

GOPATH变量最好是根据当前用户设置,意思是说,每个用户应该都会有自己的GOPATH变量,配置到用户自己目录下的 .profile 文件中。

切换到 librant 用户,打开 .profile 文件:

librant@ubuntu:~$ vim .profile

在文件的末尾增加:

export GOPATH=${HOME}/gowork

export PATH=$PATH:$GOPATH/bin

export GOBIN=$GOPATH/bin

重新使用source命令生效变量:

librant@ubuntu:~$ source .profile

5)创建Go工作目录树

GOPATH为Go工程的工作目录,创建gowork目录:

librant@ubuntu:~$ mkdir gowork

gowork目录名称可以随意,只需要在 .profile 中设置成对应的GOPATH即可。

然后在GOPATH的对应目录下分别创建 pkg bin src目录:

librant@ubuntu:~/gowork$ mkdir pkg bin src

一般一个Go项目在GOPATH目录下会存在上述三个目录,pkg目录用于存放编译后的包文件,bin目录用于存放编译后的可执行文件,src目录用于存放项目的源码文件。在使用 go install命令安装的包文件会在pkg目录下,以 .a 结尾,是经过编译的,直接将Go的包拷贝到pkg目录下是不行的。如果是生成可执行文件,会存放在bin目录下。

6)检查Go编译是否安装成功

librant@ubuntu:~/gowork$ go version

go version go1.11.2 linux/amd64

7)检查Go安装环境信息

librant@ubuntu:~/gowork$ go env

图 1-6-1 go env 输出信息
图 1-6-1 go env 输出信息

go env命令主要用于检查我们设置的变量是否正确,主要关注 GOBIN GOPATH GOROOT 几个变量。GOBIN设置可执行文件目录,GOPATH设置Go工作目录,GOROOT设置Go的安装目录。

1.7 配置 gitHub SSH

作为一名程序员,相信对 github.com 表示无比亲切,gitHub是一个面向开源及私有软件项目的托管平台,因为只支持 git 作为唯一的版本库格式进行托管,故名gitHub。gitHub可以采用两种认证方式:SSH和https。两种的区别是SSH需要进行SSH key配置,但是每次Pull的时候是不需要输入用户名密码的,而https每次都要输入用户名密码的。

1)创建本地的SSH key

librant@ubuntu:~$ ssh-keygen -t rsa -C "lishangfeng1990@163.com"

然后按三次回车键,会在 ~/.ssh 目录下生成id_rsa(私钥)和id_rsa.pub(公钥)文件。

2)将 id_rsa.pub 文件中的信息上传至github网站

如果没有gitHub账号,先注册一个(https://github.com/),这里就不介绍如何注册了。登陆成功后,点击右上角的图标,然后进入 Settings --> SSH and GPG keys --> New SSH key,Title框可以填写用于标识的字符串,key框中将id_rsa.pub文件中的信息一个字符不落的进行复制。然后点击Add SSH key即可保存成功。

3)测试秘钥是否配置成功

lazygit工具就是保存在gitHub上的开源工具,我们可以在gitHub上搜索 lazygit,找到lazygit的代码仓jesseduffield/lazygit,点击 clone or download 按钮,复制其中的URL地址。

下载的工程最好和代码仓上的路径保持一致,这样就可以省去设置GOPATH的烦恼。创建 GOPATH/src目录下没有github.com目录,如果存在就不用再创建了。为了保持目录结构的一致性,需要在github.com目录下创建jesseduffield目录,并进入到目录,然后执行:

librant@ubuntu:~/gowork/src/github.com/jesseduffield$ git clone https://github.com/jesseduffield/lazygit.git

如果配置成功,就会在当前目录下生成 lazygit 目录,然后进入到 lazygit 目录中,安装 lazygit 工具:

librant@ubuntu:~/gowork/src/github.com/jesseduffield/lazygit$ go install

瞧,Go语言编写的软件安装就是这么简单,不像C/C++软件安装那么麻烦。安装成功会在GOPATH/bin目录下生成lazygit 可执行文件。

1.8 搭建gitHub代码仓

gitHub是一个很好的代码托管的仓库,可以用来存放我们自己的代码。只需要本地修改文件,然后通过git就可以提交到自己的代码仓库中,很是方便。

1.8.1 建仓

首先是在gitHub网站上创建自己的代码仓库,在登陆自己的gitHub账号之后,在主页很显眼的位置,有个 New repository 的按钮,然后填写自己的代码仓库的名称,这样就建好了自己的代码仓库啦。

librant/CLOUND_NATIVE

gitHub代码仓:https://github.com/librant/CLOUND_NATIVE.git

1.8.2 克隆仓

仓库建好之后,在本地的$GOPATH/src目录下创建 librant 目录,在librant目录下 clone 自己的项目。

librant@ubuntu:~/gowork/src/librant$ git clone https://github.com/librant/CLOUND_NATIVE.git

会在当前目录下生成 CLOUND_NATIVE 目录,这个目录就是我们远程的代码仓。

1.8.3 本地提交

代码克隆完成之后,开始我们的第一次提交测试。修改 CLOUND_NATIVE 目录中的 README.md 文件,然后查看文件状态:

librant@ubuntu:~/gowork/src/librant/CLOUND_NATIVE$ git status

modified: README.md

然后添加到暂存区:

librant@ubuntu:~/gowork/src/librant/CLOUND_NATIVE$ git add README.md

提交我们的修改:

librant@ubuntu:~/gowork/src/librant/CLOUND_NATIVE$ git commit -m "First commit --by librant"

一般这行这步会报错,需要根据提示设置:

librant@ubuntu:~/gowork/src/librant/CLOUND_NATIVE$ git config --global user.name "librant"

librant@ubuntu:~/gowork/src/librant/CLOUND_NATIVE$ git config --global librant "lishangfeng1990@163.com"

如果在设置的时候出现 “error: key does not contain a section: librant” 报错,需要检查命令行中是否存在多余的空格,或者重现拷贝命令再进行执行。

配置完成后,就可以进行提交我们的修改。

1.8.4 推到远端

当我们commit完成后,就可以推到远端 gitHub上:

librant@ubuntu:~/gowork/src/librant/CLOUND_NATIVE$ git push

成功之后,就可以登录到我们之前创建的代码仓中查看本次的修改记录。

(更多git命令的操作教程,请参考廖雪峰的git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000)

1.9 gcc/cmake安装

为了方便以后编译软件,建议还是把gcc和cmake编译器也都安装上。

root@ubuntu:/# apt-get install gcc

查看gcc是否安装成功:

root@ubuntu:/# gcc -v

gcc version 7.3.0 (Ubuntu 7.3.0-27ubuntu1~18.04)

如果可以看到输出的gcc版本号,则表示安装成功。

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake,同样使用apt-get进行安装。

root@ubuntu:/# apt-get install cmake

查看cmake是否安装成功:

root@ubuntu:/# cmake --version

cmake version 3.10.2

如果能输出版本号就表示安装成功。

1.10 总结

到目前为止,还没有见到Docker的影子,亲爱的读者先别着急,俗话说,兵马未动,粮草先行嘛,这些软件工具都是帮助我们提高效率的,在第二章中我们将会进行Docker的安装。在以后的学习过程中,我也将不断推荐比较好的开源软件,学习别人如何写出优秀的代码。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 VMware安装
  • 1.2 Ubuntu-18.04安装
  • 1.3 环境配置
    • 1.3.1 配置虚拟机的共享目录
      • 1.3.2 相关系统软件安装
        • 1.3.3 配置SSH服务
        • 1.4 XShell安装
        • 1.5 Git安装
        • 1.6 Go安装
        • 1.7 配置 gitHub SSH
        • 1.8 搭建gitHub代码仓
          • 1.8.1 建仓
            • 1.8.2 克隆仓
              • 1.8.3 本地提交
                • 1.8.4 推到远端
                • 1.9 gcc/cmake安装
                • 1.10 总结
                相关产品与服务
                容器镜像服务
                容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档