经过前面那么多期的铺垫,今天我们终于可以来安装使用我么的docker了。这是一个非常好用的工具,我们的NAS服务百分之九十都会部署在docker上运行。
有了docker以后,你不再需要小心翼翼地担心把系统配置搞乱无法恢复,在这里你可以通过几个简单地命令就可以将相关服务重新部署回来。
就这样,请拥有,并享受
Docker简介
如你并不想了解Docker是什么,只需要能简单的用就行地话你可以跳过本小节,直接进入Docker的安装部分。
关于Docker的详细信息我们可以去Docker的官网查看,点击这里可以跳转。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
这是百科对Docker的解释,看到这里是不是很懵,不要紧,我来为你解释。
Docker是一个容器引擎,容器就是用来放东西的,Docker容器里面放的就是操作系统,一个容器对应一个操作系统,你可以把Docker想象成虚拟机,但是和虚拟机不同的是,得益于Docker的机制,在Docker中运行虚拟机往往不需要很多内存以及处理器资源,相比VMWare动则几个G的大小,在Docker中运行一个虚拟机仅需几十兆到几百兆的空间,你可以运行几十甚至上百个虚拟机在Docker中,这是VMWare所不能比的。
在开始搭建之前,你需要了解docker的几个基本概念
镜像:镜像就是实际就类似于一个安装镜像,比如你需要安装Windows,那么你需要去微软的官网下载windows的镜像,你才能进行安装。
DockerHub:DockerHub就是一个存放以及分享镜像的地方,你可以将你自己制作的镜像上传到DockerHub与别人分享,你也可以到DockerHub下载别人分享的镜像进行使用。
容器:当你启动了一个镜像之后,对应着就会有一个容器生成,容器是用来存储镜像运行时的状态的,这就相当于你通过镜像创建了一个虚拟机,那么创建完成后你的虚拟机就跑在了容器中。镜像是静态的,而容器是动态的。
有了对Docker的一个简单了解后,我们就可以进行接下来的操作了。
Docker安装与卸载
Docker安装
在apt的官方源中已经加入了Docker,但是这往往不是最新的版本,要安装最新的版本,我们需要进行一些简单的配置。
Docker提供了Enterprise
以及Community
两个版本可供安装,我们只需要安装Community
版即可,这是一个社区版,可以免费使用。
如果你以及安装了一个老的版本的Docker,那么你需要先卸载它,老版本的Docker软件名字为docker
、docker.io
或者是docker-engine
,你可以通过下面语句卸载它。
sudo apt-get remove docker docker-engine docker.io containerd runc
- 首先更新
apt
包的索引:
sudo apt update
- 安装软件包以允许
apt
通过HTTPS
使用存储库:
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
- 添加Docker的官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥 。
sudo apt-key fingerprint 0EBFCD88
执行后出现以下内容即添加成功
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
- 使用以下命令来设置稳定的存储库
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
- 更新
apt
包索引。
sudo apt-get update
- 安装最新版本的Docker Engine-Community和containerd
sudo apt install docker-ce docker-ce-cli containerd.io
- 验证安装是否成功
docker --version
如果出现如下的版本号,即为安装成功
Docker version 19.03.5, build 633a0ea838
Docker卸载
- 卸载Docker Engine-社区软件包:
sudo apt purge docker-ce
- 主机上的映像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷:
sudo rm -rf /var/lib/docker
Docker配置及基本使用
在完成docker的安装后,我们就可以开始使用docker来部署服务了,在此之前,我们先来学习一下docker的基本使用方法。
在docker中你首先需要有镜像文件(images),你才可以通过镜像来部署相关服务,镜像的话你可以到DockerHub获取,也可以自己写dockerfile来构建镜像(本专栏不涉及)。
Docker配置
- 修改镜像源
docker服务器在国外,在国内访问速度很慢,我们可以通过修改镜像源为阿里云来启用加速
首先到阿里云镜像服务中心,你需要登录阿里云。
然后进入管理控制台,然后选择镜像中心 -> 镜像加速器
如果你没有的话会提示你进行申请,完成后会看到上图的信息,会提示你进行配置,配置的话你只需要将配置镜像加速器下方的代码复制到终端执行即可(如果你分不清命令的话一次性全部复制完,粘贴后按下回车键)。
这样当以后下载镜像的时候就会快很多。
Docker基本使用
- 获取镜像文件
首先到docker官网:点击这里进行注册注册完成后登录
Docker官网
然后点击左上角的搜索框输入需要搜索的东西可进行搜索,这里以搜索Ubuntu为例
镜像搜索
完成搜索后我们可以看到列出了很多的项目,我们根据自己的需要点开一个镜像
镜像页面
在这里我们我们可以看到相关的镜像描述以及基本的信息,右边有一栏黑色的代码框,通过输入代码框的命令我们即可获取相关的镜像。
在这里我们输入一下命令来获取镜像
docker pull ubuntu
获取镜像
下载完成后我们可以通过以下命令查看本地的镜像
docker images
查看本地镜像
REPOSITORY:镜像名
TAG:标签:latest为最新版本
IMAGE ID:镜像ID,镜像唯一标识符
CREATED:构建时间
SIZE:镜像大小
- 构建容器
在有了本地镜像之后,我们就可以来构建容器了,我们先通过一个简单的例子来讲解
docker run -d \
-p 9999:8096 \
--name=ubuntu \
-v /mnt/sda:/mnt \
--restart=always \
--device /dev/dri/renderD128:/dev/dri/renderD128 \
ubuntu
出现下图所示内容即创建成功
创建成功上面命令你也可以将\符去掉写成一行,这里来讲解一下各个参数的作用
-d:表示运行容器后台运行
-p:端口映射,格式为主机端口:容器内端口,即通过主机的该端口既可以访问到容器内的端口内容
--name:命名容器,默认生成的容器名字是随机的,可以通过该命令指定
-v:绑定文件卷,格式为主机目录:容器内目录,在主机上的某一目录映射到容器内,即通过容器内指定的目录即可访问到主机对应的目录中的文件。
--restart:开机重启,always为开机重启
--device:绑定硬件到容器内部,在后面章节做详细讲解。
其他相关命令
创建成功后我们可以通过如下命令查看正在运行的容器:
docker ps
通过一下命令查看所用容器,包括未运行的容器:
docker ps -a
停止容器:
docker stop 容器名/容器id
这里容器id只需要输入前几位就可以,只要能和其他的区别开来就行
启动容器:
docker start 容器名/容器id
删除容器(删除前需要先停止容器):
docker rm 容器名/容器id
删除镜像(删除前需先删除用该镜像构建的容器)
docker rmi 镜像id
命令总结
-
docker pull
:拉取镜像 -
docker images
:查看本地镜像 -
docker run
:通过镜像构建容器 -
docker ps
:查看正在运行的容器 -
docker ps -a
:查看所有容器 -
docker start
:启动容器 -
docker stop
:停止容器运行 -
docker rm
:查出容器 -
docker rmi
:删除镜像
写在后面
容器相对来说使用还是比较简单的,通过简单的学习就可以使用。如果你对其还不是很熟悉,你应该多去实际使用上面的命令,在这里你不用担心出错,大不了使用docker rm
删除了再来一次,而不用担心物理机环境遭到破坏。
网友评论