如何在CentOS 7上安装和使用Docker

介绍


Docker是一个应用程序,它使得在容器中运行应用程序进程变得简单和容易,这类应用程序就像虚拟机,只有更便携,更加资源友好,更依赖于主机操作系统。有关Docker容器的不同组件的详细介绍,请查看Docker生态系统:公共组件简介。


在CentOS 7上安装Docker有两种方法。一种方法是将其安装在操作系统的现有安装上。另一个涉及使用称为Docker Machine的工具来启动服务器,该工具自动安装Docker。





先决条件
64位CentOS 7 Droplet
具有sudo权限的非root用户。使用CentOS 7的初始安装指南设置的CentOS 7服务器说明如何设置。

注意:Docker需要64位版本的CentOS 7以及等于或大于3.10的内核版本。默认的64位CentOS 7 Droplet满足这些要求。

步骤1 - 安装Docker
官方CentOS 7存储库中提供的Docker安装包可能不是最新版本。要获得最新和最好的版本,从官方Docker仓库安装Docker。本节向您展示如何做到这一点。


但首先,让我们更新包数据库:


sudo yum检查更新
现在运行此命令。它将添加官方Docker存储库,下载最新版本的Docker,并安装它:


curl -fsSL https://get.docker.com/ |嘘
安装完成后,启动Docker守护程序:


sudo systemctl启动docker
验证它是否正在运行:


sudo systemctl status docker
输出应类似于以下内容,显示服务是活动的并正在运行:


输出
●docker.service - Docker应用程序容器引擎
   Loaded:loaded(/lib/systemd/system/docker.service; enabled; vendor preset:enabled)
   活动:active(running)since Sun 2016-05-01 06:53:52 CDT; 1周3天前
     文件:https://docs.docker.com
 主PID:749(docker)
最后,确保在每次服务器重新启动时启动:


sudo systemctl启用docker
安装Docker现在不仅提供了Docker服务(守护程序),而且提供了docker命令行实用程序或Docker客户端。我们将在本教程后面讨论如何使用docker命令。


步骤2 - 执行没有Sudo的Docker命令(可选)
默认情况下,运行docker命令需要root权限 - 也就是说,您必须在命令前加上sudo。它也可以由docker组中的用户运行,这是在安装Docker期间自动创建的。如果您尝试运行docker命令而不使用sudo前缀或不在docker组中,您将得到如下所示的输出:


输出
docker:无法连接到Docker守护程序。 docker守护程序是否在此主机上运行?
请参见'docker run --help'。
如果您希望避免在运行docker命令时键入sudo,请将您的用户名添加到docker组:


sudo usermod -aG docker $(whoami)
您将需要注销Droplet并作为同一用户重新启用以启用此更改。


如果您需要将用户添加到您未登录的docker组,请使用以下方式明确声明用户名:


sudo usermod -aG docker用户名
本文的其余部分假设您以docker用户组中的用户身份运行docker命令。如果选择不使用,请使用sudo预先命令。


步骤3 - 使用Docker命令
随着Docker的安装和工作,现在是时候熟悉命令行实用程序。使用docker包括传递一系列选项和子命令,后跟参数。语法采用以下形式:


docker [option] [command] [arguments]
要查看所有可用的子命令,请键入:


docker
从Docker 1.11.1开始,可用子命令的完整列表包括:


输出


    attach附加到正在运行的容器
    build从Dockerfile构建映像
    commit从容器的更改创建新图像
    cp在容器和本地文件系统之间复制文件/文件夹
    create创建一个新容器
    diff检查容器文件系统上的更改
    事件从服务器获取实时事件
    exec在正在运行的容器中运行命令
    export将容器的文件系统导出为tar存档
    history显示图像的历史记录
    图像列出图像
    import从tarball导入内容以创建文件系统映像
    info显示系统范围的信息
    inspect返回容器或映像上的低级信息
    kill杀死正在运行的容器
    load从tar归档或STDIN加载映像
    login登录到Docker注册表
    logout从Docker注册表注销
    logs获取容器日志
    网络管理Docker网络
    pause暂停容器中的所有进程
    port列出端口映射或CONTAINER的特定映射
    ps列表容器
    pull从注册表中拉取图像或存储库
    push将图像或存储库推送到注册表
    rename重命名容器
    restart重新启动容器
    rm删除一个或多个容器
    rmi删除一个或多个图像
    run在新容器中运行命令
    save将一个或多个图像保存到tar存档
    搜索在Docker Hub中搜索图像
    start启动一个或多个已停止的容器
    stats显示容器资源使用统计信息的实时流
    stop停止正在运行的容器
    tag将图像标记到存储库中
    top显示容器的运行进程
    unpause取消暂停容器中的所有进程
    update更新一个或多个容器的配置
    version显示Docker版本信息
    volume管理Docker卷
    wait阻塞直到容器停止,然后打印其退出代码

要查看特定命令可用的开关,请键入:


docker docker-subcommand --help
要查看系统范围的信息,请使用:


docker信息
步骤4 - 使用Docker镜像
Docker容器是从Docker镜像运行的。默认情况下,它从Docker Hub(一个由Docker项目管理的Docker注册中心)提取这些镜像。任何人都可以在Docker Hub上构建和托管Docker镜像,所以大多数应用程序和Linux发行版都需要运行Docker容器,这些镜像托管在Docker Hub上。


要检查是否可以从Docker Hub访问和下载图像,请键入:


docker run hello-world
输出,应该包括以下内容,应该表明Docker正常工作:


输出
你好,Docker。
此消息显示您的安装看起来正常工作。
... ...
您可以使用带有search子命令的docker命令搜索Docker Hub上可用的映像。例如,要搜索CentOS映像,请键入:


docker搜索centos
该脚本将抓取Docker Hub并返回其名称与搜索字符串匹配的所有图像的列表。在这种情况下,输出将类似于:


输出
名称简介明星自动
centos CentOS的官方构建。 2224 [确定]
jdeathe / centos-ssh CentOS-6 6.7 x86_64 / CentOS-7 7.2.1511 x8 ... 22 [确定]
jdeathe / centos-ssh-apache-php CentOS-6 6.7 x86_64 / Apache / PHP / PHP M ... 17 [OK]
million12 / centos主管基地CentOS-7与supervisord发射器,11 ... [OK]
nimmis / java-centos这是CentOS 7的docker映像与dif ... 10 [OK]
torusware / speedus-centos总是更新官方CentOS docker映像... 8 [OK]
nickistre / centos-lamp LAMP on centos setup 3 [确定]


... ...
在OFFICIAL列中,OK表示项目后面的公司构建和支持的映像。一旦您确定了要使用的映像,就可以使用pull子命令将其下载到计算机,如下所示:


docker拉centos
下载映像后,您可以使用带有run子命令的下载映像运行容器。如果在使用run子命令执行docker时未下载映像,则Docker客户端将首先下载映像,然后使用该映像运行容器:


docker运行centos
要查看已下载到您的计算机的图像,请键入:


docker图像
输出应类似于以下内容:


[secondary_lable Output]
REPOSITORY TAG IMAGE ID CREATED SIZE
centos最新的778a53015523 5周前196.7 MB
hello-world最新94df4f0ce8a4 2周前967 B
正如你将在本教程后面看到的,可以修改用于运行容器的映像,并用于生成新的映像,然后可以上传(推送是技术术语)到Docker Hub或其他Docker注册表。


步骤5 - 运行Docker容器
在上一步中运行的hello-world容器是在发出测试消息后运行并退出的容器的示例。然而,容器可以比这更有用,它们可以是交互式的。毕竟,它们类似于虚拟机,只是更加资源友好。


例如,让我们使用CentOS的最新镜像运行一个容器。 -i和-t开关的组合允许您对容器进行交互式shell访问:


docker run -it centos
您的命令提示符应该更改以反映您现在在容器内工作的事实,并应采取以下形式:


输出
[root @ 59839a1b7de2 /]#
要点:在命令提示符中记下容器ID。在上面的例子中,它是59839a1b7de2。


现在你可以在容器中运行任何命令。例如,让我们在运行容器中安装MariaDB服务器。不需要使用sudo为任何命令前缀,因为您在具有root权限的容器中操作:


yum install mariadb-server


步骤6 - 将容器中的更改提交到Docker镜像
当您启动Docker镜像时,您可以像使用虚拟机一样创建,修改和删除文件。您所做的更改将仅应用于该容器。你可以启动和停止它,但一旦你破坏它与docker rm命令,更改将失去好。


本节介绍如何将容器的状态保存为新的Docker镜像。


在CentOS容器中安装MariaDB服务器后,现在有一个容器运行一个映像,但容器不同于您用于创建它的映像。


要将容器的状态保存为新图像,请先退出该容器:


出口
然后使用以下命令将更改提交到新的Docker映像实例。 -m开关用于提交消息,帮助您和其他人知道您做了哪些更改,而-a用于指定作者。容器ID是您在启动交互式docker会话时在教程中前面提到的那个。除非在Docker Hub上创建了其他存储库,否则该存储库通常是您的Docker Hub用户名:


docker commit -m“你对映像做了什么”-a“作者名称”container-id repository / new_image_name
例如:


docker commit -m“added mariadb-server”-a“Sunday Ogwu-Chinuwa”59839a1b7de2 finid / centos-mariadb
注意:提交映像时,新映像将保存在本地,即计算机上。在本教程的后面,您将学习如何将图像推送到Docker注册表(如Docker Hub),以便您和其他人评估和使用它。


在该操作完成后,列出Docker图像现在在您的计算机上应该显示新的图像,以及它的旧图像,它派生自:


docker图像
输出应该是这种类型:


输出
REPOSITORY TAG IMAGE ID CREATED SIZE
finid / centos-mariadb最新23390430ec73 6秒前424.6 MB
centos最新的778a53015523 5周前196.7 MB
hello-world最新94df4f0ce8a4 2周前967 B
在上面的例子中,centos-mariadb是新的映像,它是从Docker Hub现有的CentOS映像导出的。大小差异反映了所做的更改。在本例中,更改是安装MariaDB服务器。所以下次你需要运行一个容器使用CentOS与MariaDB服务器预安装,你可以只使用新的形象。图像也可以从所谓的Dockerfile构建。但是这是一个非常复杂的过程,完全超出了本文的范围。我们将在以后的文章中探讨。


步骤7 - 列出Docker容器
使用Docker一段时间后,您的计算机上将有许多活动(正在运行)和不活动的容器。要查看活动的,请使用:


docker ps
您将看到类似于以下内容的输出:


输出
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7c79cc556dd centos“/ bin / bash”3小时前上传3小时silly_spence
要查看所有容器 - 活动和非活动,请传递-a开关:


docker ps -a
要查看您创建的最新容器,请传递-l开关:


docker ps -l
停止正在运行或活动的容器就像输入:


docker stop container-id
container-id可以在docker ps命令的输出中找到。


步骤8 - 将Docker映像推送到Docker存储库
从现有映像创建新映像后的下一个逻辑步骤是与您选择的几个朋友,Docker Hub的整个世界或您可以访问的其他Docker注册表共享它。要将映像推送到Docker Hub或任何其他Docker注册表,您必须有一个帐户。


本节介绍如何将Docker镜像推送到Docker Hub。


要在Docker Hub上创建帐户,请在Docker Hub注册。之后,要推送您的映像,首先登录到Docker Hub。系统会提示您验证:


docker login -u docker-registry-username
如果指定了正确的密码,身份验证应该会成功。然后你可以使用:


docker push docker-registry-username / docker-image-name
它需要一些时间来完成,当完成后,输出将是这样的:


输出
推送指向一个存储库[docker.io/finid/centos-mariadb]
670194edfaf5:推
5f70bf18a086:从库/ centos安装
6a6c96337be1:从库/ centos安装


... ...


将图片推送到注册表后,应将其列在您帐户的信息中心上,如下图所示。

Docker image listing on Docker Hub


如果推送尝试导致此类错误,则可能未登录:


输出
推送指向一个存储库[docker.io/finid/centos-mariadb]
e3fbbfb44187:准备
5f70bf18a086:准备
a3b5c80a4eba:准备
7f18b442972b:准备
3ce512daaf78:准备
7aae4540b42d:等待
未授权:需要验证
登录,然后重复推送尝试。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值