搜索
首页运维Docker怎样安装和配置docker

怎样安装和配置docker

Jun 08, 2020 pm 05:06 PM
docker

怎样安装和配置docker

怎样安装和配置docker?

本文补充了关于在云中部署和管理容器化工作负载的网络研讨会系列 。 本系列介绍了容器的基本知识,包括容器生命周期管理,部署多容器应用程序,扩展工作负载以及理解Kubernetes,以及突出显示运行有状态应用程序的最佳实践。

本教程包括本系列第一部分“容器入门”中介绍的概念和命令。

介绍

Docker是一个部署和管理容器化应用程序的平台。 容器在开发人员,管理员和devops工程师中很受欢迎,因为他们提供了灵活性。

Docker有三个基本组件:

Docker引擎Docker工具Docker注册表

Docker Engine提供了管理容器的核心功能。 它与底层的Linux操作系统进行接口,以公开简单的API来处理容器的生命周期。

Docker Tools是一组与Docker Engine公开的API交互的命令行工具。 它们用于运行容器,创建新映像,配置存储和网络,以及执行更多影响容器生命周期的操作。

Docker Registry是存储容器图像的地方。 每个图像可以有多个版本通过独特的标签标识。 用户从注册表中拉出现有的图像,并推送新的图像。 Docker Hub是由Docker,Inc.管理的托管注册表。还可以在自己的环境中运行注册表,以使图像更靠近引擎。

在本教程结束时,您将在DigitalOcean Droplet上安装Docker,管理容器,处理图像,添加持久性,并设置私有注册表。

先决条件

要学习本教程,您将需要:

按照Ubuntu 16.04初始服务器设置教程设置一个Ubuntu 16.04 Droplet,其中包括一个sudo非root用户和一个防火墙。

Docker Hub帐户 。 Docker Hub的这个概述将帮助你开始。

默认情况下, docker命令需要root权限。 但是,可以通过在docker组中以docker用户身份运行docker来执行不带sudo前缀的命令。

要以这种方式配置您的Droplet,请运行命令sudo usermod -aG docker ${USER} 。 这会将当前用户添加到docker组。 然后,运行命令su - ${USER}以应用新的组成员身份。

本教程希望您的服务器配置为不使用sudo前缀来运行docker命令。

第1步 - 安装Docker

在SSH进入Droplet后,运行以下命令删除所有可能已经安装的docker相关的包,然后从官方仓库安装Docker:

sudo apt-get remove docker docker-engine docker.io
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo apt-key fingerprint 0EBFCD88sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"sudo apt-get update
sudo apt-get install -y docker-ce

安装Docker后,使用以下命令验证安装:

docker info

以上命令显示了环境中部署的Docker Engine的详细信息。 下一个命令将验证Docker Tools是否正确安装和配置。 它应该打印Docker引擎和工具的版本。

docker version

第2步 - 启动容器

Docker容器是从存储在注册表中的现有图像启动的。 Docker中的图像可以存储在私有或公共存储库中。 私有存储库要求用户在提取图像之前进行身份验证。 任何人都可以访问公共图像。

要搜索名为hello-world的映像,请运行以下命令:

docker search hello-world

可能会有多个图片与名称hello-world相匹配。 选择最大的星星,这表明图像的流行。

使用以下命令检查本地环境中的可用映像:

docker images

由于我们还没有推出任何容器,所以不会有任何图像。 我们现在可以下载图像并在本地运行:

docker pull hello-world
docker run hello-world

如果我们执行docker run命令而不拖动图像,Docker Engine将首先拉取图像然后运行它。 再次运行docker images命令显示我们有本地可用的hello-world映像。

让我们启动一个更有意义的容器:一个Apache Web服务器。

docker run -p 80:80 --name web -d httpd

您可能会注意到传递给docker run命令的其他选项。 以下是对这些开关的解释:

-p - 这告诉Docker引擎在主机的端口80上公开容器的端口80 。 由于Apache在端口80上监听,我们需要在主机端口上公开它。--name - 这个开关给我们正在运行的容器分配一个名字。 如果我们省略这个,Docker Engine将会分配一个随机的名字。

-d - 此选项指示Docker引擎以分离模式运行容器。 没有这个,容器将在前台启动,阻止对外壳的访问。 通过将容器推入后台,我们可以在容器仍在运行时继续使用外壳。

要验证我们的容器是否确实在后台运行,请尝试以下命令:

docker ps

输出显示名为web的容器正在运行,端口80映射到主机端口80 。

现在访问Web服务器:

curl localhost

让我们停止并用下面的命令删除正在运行的容器:

docker stop web
docker rm web

运行docker ps再次确认容器已被终止。

第3步 - 添加存储到容器

容器是短暂的,这意味着当容器终止时,存储在容器内的任何东西都将丢失。 要将数据保存在容器的寿命之外,我们需要将容器附加到容器中。 卷是主机文件系统的目录。

首先在主机上创建一个新目录:

mkdir htdocs

现在,让我们用一个新开关启动容器来挂载htdocs目录,并将其指向Apache Web服务器的文档根目录:

docker run -p 80:80 --name web -d -v $PWD/htdocs:/usr/local/apache2/htdocs httpd

-v开关将容器中的htdocs目录指向主机的文件系统。 对这个目录所做的任何更改都将在两个位置都可见。

通过运行以下命令从容器中访问目录:

docker exec -it web /bin/bash

该命令以交互模式将我们的终端连接到容器的外壳。 你应该看到你现在被丢在容器内。

导航到htdocs文件夹并创建一个简单的HTML文件。 最后退出shell返回主机:

cd /usr/local/apache2/htdocs
echo &#39;<h1>Hello World from Container</h1>&#39; > index.htmlexit

再次执行curl localhost命令显示Web服务器正在返回我们创建的页面。

我们不仅可以从主机访问这个文件,但我们也可以修改它:

cd htdocs
cat index.html
echo &#39;<h1>Hello World from Host</h1>&#39; | sudo tee index.html >/dev/null

再次运行curl localhost ,确认Web服务器正在提供从主机创建的最新页面。

使用以下命令终止容器。 ( -f迫使Docker先停止而不停止。)

docker rm -f web

第4步 - 建立图像

除了从注册表中运行现有的图像,我们可以创建自己的图像,并将其存储在注册表中。

您可以从现有的容器中创建新的图像。 首先提交对容器所做的更改,然后将图像标记并推送到注册表。

让我们再次启动httpd容器并修改默认文档:

docker run -p 80:80 --name web -d httpd
docker exec -it web /bin/bash
cd htdocs
echo &#39;<h1>Welcome to my Web Application</h1>&#39; > index.htmlexit

该容器现在运行一个自定义的index.html 。 你可以使用curl localhost来验证它。

在我们提交更改后的容器之前,最好停止它。 停止后,我们将运行commit命令:

docker stop web
docker commit web doweb

使用docker images命令确认图像的创建。 它显示了我们刚刚创建的doweb图像。

要在Docker Hub中标记和存储此映像,请运行以下命令将映像推送到公共注册表:

docker login
docker tag your_docker_hub_username/doweb
docker push

您可以通过从浏览器或命令行在Docker Hub中搜索来验证新映像。

第5步 - 启动私人注册表

可以在私人环境中运行注册表以保持图像更加安全。 它也减少了Docker引擎和映像库之间的延迟。

Docker Registry是一个可以像任何其他容器一样启动的容器。 由于注册表拥有多个图像,因此最好将存储卷附加到该图像上。

docker run -d -p 5000:5000 --restart=always --name registry -v $PWD/registry:/var/lib/registry registry

请注意,容器是在后台启动的,端口5000暴露, registry目录映射到主机文件系统。 您可以通过执行docker ps命令来验证容器正在运行。

我们现在可以标记一个本地图像,并将其推送到私人注册表。 我们首先从Docker Hub中取出busybox容器并对其进行标记。

docker pull busybox
docker tag busybox localhost:5000/busybox
docker images

以前的命令确认busybox容器现在用localhost:5000标记,所以将图像推送到私有注册表。

docker push localhost:5000/busybox

将图像推送到本地注册表,让我们尝试从环境中删除它,并从注册表中拉回。

docker rmi -f localhost:5000/busybox
docker images
docker pull localhost:5000/busybox
docker images

我们经历了拉动图像,标记,推送到本地注册表,最后拉回来的整个圈子。

可能有些情况下您想要在专用主机中运行私有注册表。 在不同的机器上运行的Docker引擎会与远程注册表进行通信,以获取和推送图像。

由于注册表不安全,我们需要修改Docker引擎的配置以启用对不安全注册表的访问。 为此,编辑位于/etc/docker/daemon.json的daemon.json文件。 创建文件,如果它不存在。

添加以下条目:

编辑/etc/docker/daemon.json

{
 "insecure-registries" : ["REMOTE_REGISTRY_HOST:5000"]}

REMOTE_REGISTRY_HOST替换为远程注册表的主机名或IP地址。 重新启动Docker引擎以确保应用配置更改。

结论

本教程帮助您开始使用Docker。 它涵盖了安装,容器管理,映像管理,存储和私有注册表等基本概念。 本系列即将发布的会议和文章将帮助您超越Docker的基础知识。

相关参考:docker教程

以上是怎样安装和配置docker的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
将Docker与Linux一起使用:综合指南将Docker与Linux一起使用:综合指南Apr 12, 2025 am 12:07 AM

在Linux上使用Docker可以提高开发和部署效率。1.安装Docker:使用脚本在Ubuntu上安装Docker。2.验证安装:运行sudodockerrunhello-world。3.基本用法:创建Nginx容器dockerrun--namemy-nginx-p8080:80-dnginx。4.高级用法:创建自定义镜像,使用Dockerfile构建并运行。5.优化与最佳实践:使用多阶段构建和DockerCompose,遵循编写Dockerfile的最佳实践。

Docker监视:收集指标和跟踪集装箱健康Docker监视:收集指标和跟踪集装箱健康Apr 10, 2025 am 09:39 AM

Docker监控的核心在于收集和分析容器的运行数据,主要包括CPU使用率、内存使用、网络流量和磁盘I/O等指标。通过使用Prometheus、Grafana和cAdvisor等工具,可以实现对容器的全面监控和性能优化。

Docker群:建筑物可扩展和弹性的容器簇Docker群:建筑物可扩展和弹性的容器簇Apr 09, 2025 am 12:11 AM

DockerSwarm可用于构建可扩展和高可用性的容器集群。1)初始化Swarm集群使用dockerswarminit。2)加入Swarm集群使用dockerswarmjoin--token:。3)创建服务使用dockerservicecreate--namemy-nginx--replicas3nginx。4)部署复杂服务使用dockerstackdeploy-cdocker-compose.ymlmyapp。

Kubernetes的Docker:用于企业应用程序的集装箱编排Kubernetes的Docker:用于企业应用程序的集装箱编排Apr 08, 2025 am 12:07 AM

如何利用Docker和Kubernetes进行企业应用的容器编排?通过以下步骤实现:创建Docker镜像并推送到DockerHub。在Kubernetes中创建Deployment和Service以部署应用。使用Ingress管理外部访问。应用性能优化和最佳实践,如多阶段构建和资源限制。

Docker故障排除:诊断和解决常见问题Docker故障排除:诊断和解决常见问题Apr 07, 2025 am 12:15 AM

Docker常见问题可以通过以下步骤诊断和解决:1.查看容器状态和日志,2.检查网络配置,3.确保卷挂载正确。通过这些方法,可以快速定位并修复Docker中的问题,提升系统稳定性和性能。

Docker面试问题:Ace您的DevOps工程采访Docker面试问题:Ace您的DevOps工程采访Apr 06, 2025 am 12:01 AM

Docker是DevOps工程师必备的技能。1.Docker是开源的容器化平台,通过将应用程序及其依赖打包到容器中,实现隔离和可移植性。2.Docker的工作原理包括命名空间、控制组和联合文件系统。3.基本用法包括创建、运行和管理容器。4.高级用法包括使用DockerCompose管理多容器应用。5.常见错误有容器无法启动、端口映射问题和数据持久化问题,调试技巧包括查看日志、进入容器和查看详细信息。6.性能优化和最佳实践包括镜像优化、资源限制、网络优化和使用Dockerfile的最佳实践。

Docker安全硬化:保护您的容器免受漏洞Docker安全硬化:保护您的容器免受漏洞Apr 05, 2025 am 12:08 AM

Docker安全强化的方法包括:1.使用--cap-drop参数限制Linux能力,2.创建只读容器,3.设置SELinux标签。这些策略通过减少漏洞暴露面和限制攻击者能力来保护容器安全。

Docker卷:在容器中管理持久数据Docker卷:在容器中管理持久数据Apr 04, 2025 am 12:19 AM

DockerVolumes可确保数据在容器重启、删除或迁移时依然安全。1.创建Volume:dockervolumecreatemydata。2.运行容器并挂载Volume:dockerrun-it-vmydata:/app/dataubuntubash。3.高级用法包括数据共享和备份。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版