当前位置: 首页 > 科技观察

如何在Ubuntu22.04LTS中安装Docker和DockerCompose

时间:2023-03-15 13:42:23 科技观察

在这篇文章中,我们将了解什么是Docker以及如何在Ubuntu中安装Docker引擎。此外,我们还将了解如何安装DockerCompose,这是一个定义和运行多个容器的Docker应用程序。我们已经在Ubuntu22.04LTS上正式测试了本指南。但是,它也适用于20.04LTS和18.04LTS等旧版本。为了更好的安全性和稳定性,我建议您使用最新版本——Ubuntu22.04LTS。什么是码头工人?Docker是一种快速、轻量级的系统级虚拟化技术,开发人员和系统管理员可以使用它来构建具有所有必要依赖项的应用程序,并将它们作为一个包进行分发。与VMWare、Xen和VirtualBox等其他工具不同,Docker不需要为每个虚拟机配备单独的客户操作系统。所有Docker容器有效地共享相同的主机系统内核。每个容器都在同一操作系统内的隔离用户空间中运行。Docker容器可以在任何Linux发行版上运行。假设你使用Fedora而我使用Ubuntu。我们可以相互开发、共享和分发Docker镜像。您不必担心操作系统、软件、定制等任何问题。只要我们的主机安装了Docker,我们就可以继续开发。简而言之,Docker可以在任何地方运行!在上一篇文章中你看到了两个词:Dockerimage和Dockercontainer,也许你正在思考它们之间的区别。通俗地说,Docker镜像是一个描述容器应该如何行为的文件,而Docker容器就是Docker镜像的运行(或停止)状态。希望你能理解Docker的基本概念。更多细节可以参考文末Docker官方指南。Docker依赖关系为了安装和配置Docker,您的系统必须满足以下最低要求:64位Linux或Windows系统如果使用Linux,内核版本必须至少为3.10在您的系统上具有sudo权限的用户BIOS启用VT(VirtualizationTechnology)supportonyoursystemBIOS(reference:HowtocheckCPUsupportvirtualizationtechnology(VT))你的系统应该在Linux中联网,在终端上运行以下命令来验证内核和架构细节信息:$uname-a样本输出:LinuxUbuntu22CT5.15.35-3-pve#1SMPPVE5.15.35-6(Fri,17Jun202213:42:35+0200)x86_64x86_64x86_64GNU/Linux如上所述如你所见,我的Ubuntu系统内核版本为5.15.35-3-pve,系统架构为64位(x86_64x86_64x86_64GNU/Linux)。注意:在这里,我在Proxmox中使用Ubuntu22.04容器。这就是你在上面的内核版本中看到“pve”字符的原因。如果您使用的是Ubuntu物理(或虚拟)机,您将看到系统版本为5.15.35-3-generic。内核版本需要至少是最低要求的版本并且是64位机器。这样应该就没有问题了,我们就可以毫无问题的安装和使用Docker了。请注意,您使用哪个Ubuntu系统并不重要。而且,无论您使用Ubuntu桌面版还是服务器版,或者其他Ubuntu变体,如Lubuntu、Kubuntu、Xubuntu,都没有关系。只要你的系统内核版本不低于3.10,并且是64位系统,Docker就可以正常运行。在Ubuntu22.04LTS中安装Docker首先,更新你的Ubuntu系统。1.更新Ubuntu打开终端依次运行以下命令:$sudoaptupdate$sudoaptupgrade$sudoaptfull-upgrade2.添加Docker仓库首先,安装必要的证书并允许apt包管理器使用使用以下命令通过HTTPS存储库:$sudoaptinstallapt-transport-httpsca-certificatescurlsoftware-properties-commongnupglsb-release然后,运行以下命令添加Docker的官方GPG密钥:$curl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudogpg--dearmor-o/usr/share/keyrings/docker-archive-keyring.gpg添加Docker官方库:$echo"deb[arch=$(dpkg--print-architecture)signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]https://download.docker.com/linux/ubuntu$(lsb_release-cs)稳定”|sudotee/etc/apt/sources.list。d/docker.list>/dev/null使用以下命令更新Ubuntu源列表:$sudoaptupdate3。安装Docker最后在Ubuntu22.04LTS服务器上运行如下命令安装最新的DockerCE:$sudoaptinstalldocker-cedocker-ce-clicontainerd.iodocker-compose-pluginInstallDockerInUbuntu当然你也可以安装其他版本的Docker。运行以下命令检查可以安装的Docker版本:$apt-cachemadisondocker-ceoutputsample:docker-ce|5:20.10.17~3-0~ubuntu-jammy|https://download.docker.com/linux/ubuntujammy/stableamd64软件包docker-ce|5:20.10.16~3-0~ubuntu-jammy|https://download.docker.com/linux/ubuntujammy/stableamd64软件包docker-ce|5:20.10.15~3-0~ubuntu-jammy|https://download.docker.com/linux/ubuntujammy/stableamd64软件包docker-ce|5:20.10.14~3-0~ubuntu-jammy|https://download.docker.com/linux/ubuntujammy/stableamd64软件包docker-ce|5:20.10.13~3-0~ubuntu-jammy|https://download.docker.com/linux/ubuntujammy/stableamd64Packages您可以从上面的列表中选择任何版本进行安装。例如,要安装版本5:20.10.16~3-0~ubuntu-jammy,运行:$sudoaptinstalldocker-ce=5:20.10.16~3-0~ubuntu-jammydocker-ce-cli=5:20.10.16~3-0~ubuntu-jammycontainerd.io安装完成后,运行以下命令来验证Docker服务是否正在运行:$systemctlstatusdocker你会看到类似如下的输出:*docker.service-Docker应用程序容器引擎已加载:已加载(/lib/systemd/system/docker.service;已启用;供应商预设:已启用)活动:自2022年6月27日星期一13:07:43UTC起处于活动状态(运行);3分钟4秒前TriggeredBy:*docker.套接字文档:https://docs.docker.com主要PID:2208(dockerd)任务:8内存:29.6MCPU:126msCGroup:/system.slice/docker.service`-2208/usr/bin/dockerd-Hfd://--containerd=/run/containerd/containerd.sock6月27日13:07:43Ubuntu22CTdockerd[2208]:time="2022-06-27T13:07:43.071453522Z"level=infomsg="ccResolverWrapper:发送更新到cc:{[{unix:>Jun2713:07:43Ubuntu22CTdockerd[2208]:time="2022-06-27T13:07:43.071459974Z"level=infomsg="ClientConnswitchingbalancerto\"pick_first\"">Jun2713:07:43Ubuntu22CTdockerd[2208]:time="2022-06-27T13:07:43.130989294Z"level=infomsg="装载容器:开始。Jun2713:07:43Ubuntu22CTdockerd[2208]:time="2022-06-27T13:07:43.187439756Z"level=infomsg="Defaultbridge(docker0)isassignedwithanIPa>Jun2713:07:43Ubuntu22CTdockerd[2208]:time="2022-06-27T13:07:43.235966874Z"level=infomsg="加载容器:完成。"Jun2713:07:43Ubuntu22CTdockerd[2208]:time="2022-06-27T13:07:43.240149866Z"level=warningmsg="不对overlay2使用本机diff,这可能是c>Jun2713:07:43Ubuntu22CTdockerd[2208]:time="2022-06-27T13:07:43.240281966Z"level=infomsg="Dockerdaemon"commit=a89b842graphdriver(s)=over>6月27日13:07:43Ubuntu22CTdockerd[2208]:time="2022-06-27T13:07:43.240386856Z"level=infomsg="守护进程已完成初始化"6月27日13:07:43Ubuntu22CTsystemd[1]:启动了Docker应用程序容器引擎。6月27日13:07:43Ubuntu22CTdockerd[2208]:time="2022-06-27T13:07:43.276336600Z"level=infomsg="APIlistenon/run/docker.sock"太棒了!Docker服务已启动并正在运行!如果未运行,运行以下命令运行Docker服务:$sudosystemctlstartdocker使Docker服务在每次重启时自动启动:$sudosystemctlenabledocker您可以使用以下命令查看已安装的Docker版本:$sudodocker版本示例输出:客户端:Docker引擎-社区版本:20.10.17API版本:1.41Go版本:go1.17.11Git提交:100c701内置:2022年6月6日星期一23:02:46OS/Arch:linux/amd64上下文:默认实验:true服务器:Docker引擎-社区引擎:版本:20.10.17API版本:1.41(最低版本1.12)Go版本:go1.17.11Git提交:a89b842内置:MonJun623:00:512022OS/Arch:linux/amd64实验:falsecontainerd:版本:1.6.6GitCommit:10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1runc:版本:1.1.2GitCommit:v1.1.2-0-ga916309docker-init:版本:0.1:de40ad0CheckDockerVersion4.测试Docker让我们继续测试Docker是否正常运行:运行:$sudodockerrunhello-world以上命令会下载一个Docker测试镜像,并在容器中执行一个“hello_world”示例程序如果你看看输出类似于下面的输出,那么恭喜!Docker现在可以在你的Ubuntu系统上正常运行了。无法在本地找到图像“hello-world:latest”最新:从库/hello-world2db29710123e中提取:提取完整摘要:sha256:13e367d31ae85359f42d637adf6da428f76d75dc9afeb3c21faea0d976f5c651状态:已为hello-world下载较新的图像:来自Docker的最新你好!此消息表明您的安装似乎工作正常。为生成此消息,Docker采用了以下步骤:1.Docker客户端联系Docker守护进程。2.Docker守护进程从DockerHub拉取“hello-world”图像。(amd64)3.Docker守护进程从该映像创建了一个新容器,该容器运行可生成您当前正在阅读的输出的可执行文件。4.Docker守护进程将该输出流式传输到Docker客户端,后者将其发送到您的终端。要尝试更雄心勃勃的事情,您可以运行一个Ubuntu容器:$dockerrun-itubuntubashShareimages,a使用免费的DockerID自动化工作流程等:https://hub.docker.com/有关更多示例和想法,请访问:https://docs.docker.com/get-started/RunHelloWorldDockerContainer很不错!5.以非root用户身份运行Docker(可选)默认情况下,Docker守护进程绑定到Unix套接字而不是TCP端口。由于Unix套接字由root拥有,因此Docker守护进程将仅以root身份运行。因此,普通用户无法执行大多数Docker命令。如果你想以非root用户身份在Linux中运行Docker,请参考以下链接:如何以非root用户身份在Linux中运行Docker我个人不这样做,也不建议你这样做。如果您不打算在互联网上公开您的系统,那很好。但是,请勿在生产系统上以非根用户身份运行Docker。在Ubuntu中安装DockerComposeDockerCompose是一个可用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用Compose文件配置应用程序的服务。然后,使用一个命令,您可以从配置中创建和启动所有服务。可以通过以下任何一种方式安装DockerCompose。方法1.使用二进制文件安装DockerCompose从这里下载最新的DockerCompose。在我撰写本文时,最新版本是2.6.1。通过运行以下命令安装最新的稳定DockerCompose文件:$sudocurl-L"https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$(uname-s)-$(uname-m)"-o/usr/local/bin/docker-compose如果有更新的版本,只需将上面命令中的v2.6.1替换为最新的版本号即可。请不要忘记数字前的“v”。最后,使用以下命令赋予二进制文件可执行权限:$sudochmod+x/usr/local/bin/docker-compose运行以下命令检查安装的DockerCompose版本:$docker-composeversionDockerComposeversionv2。6.1方法二,使用Pip安装DockerCompose也许,我们可以使用Pip安装DockerCompose。Pip是一个Python包管理器,用于安装用Python编写的应用程序。请参考下面的链接来安装Pip。如何使用Pip管理Python包安装Pip后,运行以下命令安装DockerCompose。以下命令对所有Linux发行版都是一样的!$pipinstalldocker-compose安装DockerCompose后,使用以下命令检查版本:$docker-compose--version您应该看到类似于以下内容的输出:docker-composeversion2.6.1,build8a1c60f6恭喜!我们已经成功安装了DockerCommunityEdition和DockerCompose。安装了Docker,现在呢?查看本系列的下一篇文章,了解Docker的基础知识。开始使用Docker要在基于RPM的系统(例如RHEL、Fedora、CentOS、AlmaLinux、RockyLinux和openSUSE)中安装Docker,请参考以下链接。在CentOS中安装Docker总结在本教程中,我们讨论了什么是Docker以及如何在Ubuntu22.04LTSJammyJellyfish中安装Docker。然后学习了如何通过运行hello-worldDocker镜像来测试Docker是否安装成功。最后,我们通过以两种不同方式安装DockerCompose来结束本教程。文档Docker主页