Ubuntu下安装docker方法详解

从19年开始,在华为的一次面试中第一次听到docker,后来因为找工作和入职开发任务繁忙没有太多的去研究这一块,直到最近我们公司的软件供应商交付的产品是用docker作为承载来开发,这一次必须来研究研究如何部署docker了。

  1. 部署之前的准备
  2. 准备好相应的软件
  3. 测试
    4.结语

一、部署之前的准备

部署之前必须得说一句,我之前用的是window7系统32位,但是拿到官方文档一看才知道,用现在的系统可能永远都用不上docker了(因为当时我的第一想法是直接使用docker Desktop for windows),所以我把电脑先从win7 32位更新到win10 32位,后来又更新成64位的。
docker官网对于安装环境的要求装了win10 64位才发现还是有坑,因为docker desktop for Windows只支持win10专业版,并且版本号要在15603以上。当时彼时我还是没有马上启动虚拟机的决定,因为在查阅资料后发现可以通过DockerToolbox的方式来兼容win10 15603以下的版本,于是我下载之后尝试通过Docker Toolbox的方式来完成docker来安装,在安装完成之后电脑桌面上多出来这几个软件图标, 安装完成之后多出来的三个软件当然第一时间我打开了最左边的Docker Quickstart Terminal。
但是出现了这样的不友好的页面,在来来回回尝试了几回之后我发现这种方式体验并不好,而且最终在同事的帮助下也没能完成开发环境的搭建。
Docker Quckstart 启动之后
在同事的建议之下,我在VirtualBox里面安装了Ubuntu虚拟机16.04,当然安装虚拟机会花费大概1~2小时左右的时间,这点要有心理准备,在安装好了之后,我发现原生的Ubuntu16.04并不能直接为我所用,比如说当我在终端执行apt-get install git的时候显示没有候选的安装包
在这里插入图片描述Google之发现是下载源的问题。Ubuntu因为是国外的系统,所以默认提供的源是国外的网址,一是下载速度慢,另一点是一些安装包不完整,这时候最明智的做法是,替换成国内的镜像源。替换之前建议备份一下。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

然后,修改sources.list的权限,使其可编辑:

sudo chmod 777 /etc/apt/sources.list

接着,编辑sources.list文件(这里建议是用gedit):

sudo gedit /etc/apt/sources.list

把里面的内容替换成阿里或者清华的源:

阿里源:
1
	
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

清华的源:

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

在替换完成之后,一定要做的事情是update一下软件列表:

sudo apt-get update

至此,换源完成。

More:在这里想多说一点是什么呢,可能有些开发人员也和我一样,在更换完源之后在执行sudo apt-get install [软件包名称] 的时候,还是会报错,类似E:Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavialable)
E: Unable to acquire the dpkg fronted lock (/var/lib/dpkg/lock-frontend), is another process using it?
这种一般是因为锁的问题,对应的解决方法是:删掉之前遗留下来的进程

sudo rm /var/cache/apt/archives/lock-frontend
sudo rm /var/lib/dpkg/lock-frontend

当然,我们要根据实际情况来执行相应的命令,如果错误提示如下:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavialable)
这时需要修改命令为:

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

二、开始部署

在解决了部署的环境问题之后,我们着手开始部署docker。目前,docker CE支持的Ubuntu版本有:
Bionic 18.04 (LTS)
.Xenial 16.04 (LTS)
.Trusty 14.04 (LTS) (Docker CE v18.06 及以下版本)
***

Docker CE 可以安装在 64 位的 x86 平台或 ARM 平台上。Ubuntu 发行版中,
LTS(Long-Term-Support)长期支持版本,会获得 5 年的升级维护支持,这样的
版本会更稳定,因此在生产环境中推荐使用 LTS 版本。
首先,卸载旧版的docker(如果存在的话)

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

Ubuntu16.04
Ubuntu16.04上的Docker CE默认使用overlay2 存储层驱动,无需手动配置。
使用APT安装
由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要
添加使用 HTTPS 传输的软件包以及 CA 证书。

sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get install ca-certificates
sudo apt-get install curl
sudo apt-get install software-properties-common

为了确认所下载软件包的合法性,还需要添加软件源的 GPG 密钥。

$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/
gpg | sudo apt-key add -

引用的是国内中科大的镜像源

然后,我们需要向source.list 中添加Docker软件源

sudo apt-add-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linu
x/ubuntu \
$(lsb_release -cs) \
stable"

官方源:

#$ sudo add-apt-repository \
# "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
# $(lsb_release -cs) \
# stable"

(以上命令会添加稳定版本的 Docker CE APT 镜像源,如果需要测试或每日构
建版本的 Docker CE 请将 stable 改为 test 或者 nightly。)

安装Docker CE
更新aptr软件包缓存,并安装docker-ce:

sudo apt-get update
sudo apt-get install docker-ce

在这里我想说的是,我使用的是Ubuntu16.04LTS,但是在实际执行的过程中,并没有出现想要的效果,相反报错找不到候选的源
报错提示
然后我又按提示,准备安装docker-ce-cli:amd64,同样安装不成功
在这里插入图片描述最后,在尝试安装依赖包的时候,我发现了替代方案,安装docker.io

sudo apt-get install docker.io

成功,然后启动docker。

sudo systemctl enable docker
sudo systemctl start docker

Ubuntu 14.04使用如下命令启动:

sudo service docker start

三、 测试docker是否安装成功

在terminal里面输入:

sudo docker run hello-world

但是,在这里并没有出现预期的成功提示,而是提示:
在这里插入图片描述这个时候我才明白,我少配置了一个东西,导致docker无法在本地找到hello-world的镜像源,也无法从docker的库里去拉去镜像源,出现这个问题的原因是因为我们没有配置镜像加速器,解决这个问题我们可以通过阿里云官方镜像加速帮助文档来获取,在页面的最下面,找到加速器地址的链接,通过登录阿里云帐号,每个人都可以生成自己的镜像加速器地址:
在这里插入图片描述然后,切换到/etc/docker目录下面,编辑daemon.json文件,通常这个文件是没有的,需要我们先用touch命令创建好,然后再把刚才生成的加速器地址放到里面来:

"registry-mirrors":["https://yoururl.mirror.aliyuncs.com"],

注意:因为在这里对docker做了重新配置,所以要求我们对docker服务器进行重启。

sudo systemctl restart docker

重启之后,可以通过

sudo systemctl status docker

来查看docker的状态。
启动结果发现是正常启动的,然后我们来测试。

sudo docker run hello-world

当看到下面的界面的时候,表示我们已经成功了。
在这里插入图片描述docker正式在虚拟机上跑起来了。👏

四、结语:

除了Ubuntu,docker 也可以在Fedora、Debian、CentOS、MacOS上部署运行,但是目前对于windows的支持还是比较有限,这也决定了大多数时候docker的移植性比较强,在一般用来做服务器的系统上都可以跑起来,加上docker在资源利用上的高效和CICD方面的优秀性能,相信在未来一定会成为越来越多开发人员的选择。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章