Linux下安装Docker具体方法

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化,下面为大家分享一下Linux下安装Docker具体方法。

安装

由于 Ubuntu Server 16.04 缺少图形界面,我会完全通过命令行来安装和使用 Docker。在你安装前,你需要更新 apt 然后进行必要的升级。一定要注意,若系统内核升级了,你会需要重启系统。因此最好挑个服务器能重启的时间进行。

运行下面命令更新 apt:

sudo apt update

完成后,使用命令升级系统:

sudo apt upgrade

若内核升级了,你需要用下面命令重启服务器

sudo reboot

若内核没有升级,你就可以安装 Docker 了(无需重启)。安装 Docker 的命令为:

sudo apt install docker.io

若你使用的是其它 Linux 发行版,当尝试用相应的包管理器来安装时却发现没有 docker.io 包,则你应该安装 docker 包。例如,在 Fedora 上安装应该用命令:

sudo dnf install docker

若你使用的是 CentOS 7,那么最好使用安装脚本来安装 docker。首先使用命令 sudo yum check-update 更新系统。升级完后,输入下面命令来下载并运行所需的脚本:

curl -fsSL https://get.docker.com/ | sh

默认情况下,只有管理员权限能够运行 docker 命令。考虑到安全问题,你不会想用 root 用户或使用 sudo 来运行 Docker 的。要解决这个问题,你需要将自己的用户加入到 docker 组中。命令如下:

sudousermod-a -G docker $USER

完成操作后,登出系统然后再重新登录,应该就搞定了。不过若你的平台是 Fedora,则添加用户到 docker 组时会发现这个组是不存在的。那该怎么办呢?你需要首先创建这个组。命令如下:

sudogroupadd docker &&sudo gpasswd -a ${USER} docker &&sudosystemctl restart docker
newgrp docker

登出后再登录。就可以开始用 Docker 了。

启动,暂停以及启用 Docker 安装好 Docker 后,你可以让系统在启动时自动启动 Docker 守护进程。使用下面两个命令来实现这一点:

sudo systemctl start dockersudo systemctl enable docker

若需要暂停或重启 Docker 守护进程,则命令为:

sudo systemctl stop dockersudo systemctl restart docker

现在可以用 Docker 来部署容器了。

拉取镜像

对 Docker 来说,镜像是构建容器的基石。你可以拉下一个镜像(比如 NGINX)然后根据这个镜像部署任意多个容器出来。使用镜像前,你首先需要把镜像拉取到系统中。镜像从注册仓库中拉取,默认情况下安装好的 Docker 包含了一个默认的注册仓库 Docker Hub —— 这个注册仓库包含了大量别人所贡献的镜像(既包括官方的镜像,也包括用户自己贡献的镜像)。

假设你想要拉取一个 Nginx Web 服务器相关的镜像。在开始拉取前,先检查一下系统中已经有了哪些镜像。输入 docker images 命令你会发现现在还没有镜像存在(图 1)。

大神教你在 Linux 上安装和使用 Docker大神教你在 Linux 上安装和使用 Docker

图 1:还没有镜像。

让我们来拉取一个镜像。使用下面命令可以从 Docker Hub 中下载 Nginx 镜像:

docker pull nginx

上面命令会从 Docker Hub 下载最新的(官方的) Nginx 镜像。现在再运行 docker images 命令就能看到有列出镜像了(图 2)。

大神教你在 Linux 上安装和使用 Docker大神教你在 Linux 上安装和使用 Docker

图 2:NGINX 镜像已经被拉取下来了。

注意到我这里说的是“官方” Nginx 镜像了吗?在 Docker Hub 上有很多的非官方 Nginx 镜像。这些非官方镜像都是基于各种不同的目的而创建出来的。你可以使用下面过命令来搜索 Docker Hub 中的所有 Nginx 镜像:

docker search nginx

你会发现(图 3 中),有很多基于不同目的所创建的 Nginx 镜像(反向代理、PHP-FPM(LCTT 译注:FastCGI 进程管理器FastCGI Process Manager是一个 PHPFastCGI 管理器,旨在将 FastCGI 进程管理整合进 PHP 包中)功能、LetsEncrypt(LCTT 译注:由 ISRG 提供的免费 SSL 项目),Bitnami,在树莓派上使用的 Nginx 和 Drupal,等等很多很多)。

大神教你在 Linux 上安装和使用 Docker大神教你在 Linux 上安装和使用 Docker

图 3:Docker Hub 上找到的各种 NGINX 镜像。

假设,你想要下载内建有反向代理功能的 Nginx 镜像,有个非官方的镜像 jwilder/nginx-proxy。因此输入下面命令来拉取这个镜像:

docker pull jwilder/nginx-proxy

再输入 docker images 命令来查看新拉下来的这个镜像(图 4)。

大神教你在 Linux 上安装和使用 Docker大神教你在 Linux 上安装和使用 Docker

图 4:已经有了两种不同的 NGINX 镜像了。

处于谨慎考虑,我建议只使用官方镜像,毕竟你无法确定非官方镜像是否包含了恶意代码。

有了镜像后就可以用它来部署容器了。下次我们再聊聊如何通过这些 Nginx 镜像来发布容器。

Docker 是一个超级强力的系统可以让你的工作更简单,让你的公司更具有伸缩性,也更灵活。想知道 Docker 还能做什么,运行 man docker 然后阅读它的帮助文档吧。

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/8693.html

(0)
晴川运维晴川运维
上一篇 2025年6月12日
下一篇 2025年6月12日

相关推荐

  • 简单介绍一下机器码与字节码

    什么是机器码 机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据。 通常意义上来理解的话,机器码就是…

    Linux系统 2025年9月16日
  • Linux下crontab使用方法

    Linux crontab是用来定期执行程序的命令,当安装完成操作系统之后,默认便会启动此任务调度命令,crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自…

    Linux系统 2025年6月8日
  • Linux下more命令高级用法

    我们在 Linux 环境下工作时,每天肯定会跟各种各样的文本文件打交道。这些文件,有时候会非常长,无法在一屏的空间内显示完全。所以,在查看这种文件时,我们需要分页显示。这时,我们就…

    Linux系统 2025年6月10日
  • Linux内核模块参数具体方法

    内核模块是Linux操作系统中一个比较独特的机制,采用模块化技术可以使得系统内核保持最小化,同时确保了内核的可扩展性和可维护性,模块化设计允许我们在需要时才将模块加载至内核,实现动…

    Linux系统 2025年10月5日
  • SVN版本回退

    SVN是一款版本控制工具。相对于GitHub而言,SVN在使用上更为简化些,本篇文章重点为大家讲解一下SVN版本回退。 当我们想放弃对文件的修改,可以使用 SVN revert 命…

    Linux系统 2025年6月21日
  • 详解Spring中AOP

    AOP (Aspect Orient Programming),直译过来就是 面向切面编程。AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各个…

    Linux系统 2025年6月28日
  • Linux中常用的文本处理技巧

    作为一名 Linux 研发人员,几乎每天都要面对文本处理场景。 因此 掌握文本处理套路 并 熟练运用文本处理命令 ,对于 提升工作效率 意义重大。本文以一个实战例子抛砖引玉,介绍如…

    Linux系统 2025年7月1日
  • Kubernetes共享Ceph存储具体方法

    Kubernetes pod 结合Ceph rbd块设备的使用,让Docker 数据存储在Ceph,重启Docker或k8s RC重新调度pod 不会引起数据来回迁移。 工作原理无…

    Linux系统 2025年10月19日
  • Linux下安装并使用Speedtest具体方法

    Speedtest.net强大而知名的全球宽带网络速度测试网站,采用Flash载入界面,Alexa世界排名非常高,Speedtest.net在全球有数百个测试节点,国内有测速节点几…

    Linux系统 2025年10月11日
  • SELinux Targeted、MLS和Minimum策略

    对于 SELinux 来说,所选择的策略类型直接决定了使用哪种策略规则来执行主体(进程)可以访问的目标(文件或目录资源)。不仅如此,策略类型还决定需要哪些特定的安全上下文属性。通过…

    Linux系统 2025年10月22日

发表回复

登录后才能评论