引言
Docker 是现代软件开发和部署的神器,它利用容器化技术使应用的交付和运行变得更加高效。今天,我们将详细介绍如何在 CentOS 7 上安装和配置 Docker,同时将揭开 Docker 背后的工作原理,最后通过一个实例来进行验证安装。
一、Docker 的工作原理
Docker 使用容器来运行应用程序,容器就像是轻量级的小型虚拟机,但它们并不包含操作系统的镜像,而是直接在宿主机的操作系统上运行,共享 Kernel 但保持独立的执行环境。
当你启动一个容器时,Docker 会在宿主操作系统上创建一个逻辑的容器,这个容器包含应用的代码、运行时、系统工具、系统库等一切运行应用所需的东西。由于它们不需要额外的操作系统加载和模拟硬件,所以容器启动速度快,资源占用少。
二、docker与虚拟机的区别
Docker和虚拟机都是在计算机上创建隔离环境以运行和管理应用程序的技术,但它们在架构和工作原理上有着根本的区别:
-
虚拟机(VM):
-
全虚拟化:虚拟机利用虚拟化软件(如VMware、VirtualBox)在硬件上运行一个完整的操作系统,为应用程序提供运行环境。
-
资源隔离:每个虚拟机都包括完整的操作系统、内核以及运行应用程序所需的用户空间。
-
性能开销:因为运行完整的操作系统,虚拟机通常会占用更多的系统资源,启动速度较慢,性能有一定程度的影响。
-
硬件抽象:虚拟机通过Hypervisor层虚拟出硬件资源,应用程序对这些虚拟出的硬件资源进行操作。
-
-
Docker:
-
容器化:Docker是一个基于容器的轻量级虚拟化解决方案。它直接运行在宿主机的操作系统之上,与宿主机共享内核。
-
资源共享:容器内的应用共享宿主机的操作系统内核,但在用户空间内运行在隔离的环境中。
-
性能:因为没有独立的操作系统负载,Docker 容器的启动非常快速,几乎没有性能损耗,资源消耗也比较少。
-
更少的冗余:相较于虚拟机,容器不需要额外的操作系统,资源使用更加高效。
-
总结对比:
-
启动时间:Docker 容器的启动时间通常为秒级,而虚拟机需要分钟级。
-
资源利用率:Docker在多个容器间运行应用程序时更加高效,因为它们共享宿主机的内核,而多个虚拟机意味着有多个操作系统实例,会占用更多的资源。
-
隔离性:虚拟机提供了更高级别的隔离,因为每个VM都有独立的内核和操作系统,而Docker容器之间共享宿主机内核。
-
安全性:虚拟机由于提供了更完整的隔离,通常认为在安全性方面优于Docker容器。容器之间由于共享内核,一旦宿主机的内核出现安全漏洞,所有容器都会受到影响。
-
场景:虚拟机较适合运行需要完整操作系统支持的复杂应用,而Docker容器适合用于微服务架构和持续集成/持续部署(CI/CD)的环境。
三、docker安装
查看系统版本:
cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)
步骤 1: 卸载旧版本
Docker 的旧版本被称为 docker
或 docker-engine
。如果安装了这些,建议先卸载它们:
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
步骤 2: 安装所需的包
安装 yum-utils
,它提供了 yum-config-manager
,并且为 device-mapper-persistent-data
和 lvm2
提供所需的存储驱动支持:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
步骤 3: 设置 Docker 仓库
使用以下命令来设置稳定的仓库:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
步骤 4: 安装 Docker Engine
现在可以安装 Docker Engine:
sudo yum install -y docker-ce docker-ce-cli containerd.io
如果想安装特定版本的 Docker,先列出仓库中可用的版本后选择安装:
sudo yum list docker-ce --showduplicates | sort -r sudo yum install -y <SPECIFIC_VERSION_STRING>
步骤 5: 启动 Docker
安装完成后,启动 Docker 守护进程:
sudo systemctl start docker
为了让 Docker 在启动时自动运行,运行以下命令:
sudo systemctl enable docker
步骤 6: 验证安装
为了确认 Docker 是否正确安装,你可以运行一个 Hello World 示例容器:
sudo docker run hello-world
如果你看到了欢迎消息,说明 Docker 已经成功安装并运行了。
四、docker部署nginx
步骤 1: 拉取 Nginx 镜像
首先,我们需要从 Docker Hub 中拉取最新的官方 Nginx 镜像到本地,执行以下命令:
sudo docker pull nginx
上述命令将会从 Docker Hub 中拉取最新版的 Nginx 镜像。如果你需要特定版本的 Nginx,可以指定版本号(比如:nginx:1.17.1
)。
步骤 2: 运行 Nginx 容器
一旦 Nginx 镜像被拉取到本地,你可以运行一个容器。下面的命令将创建一个名为 my-nginx
的容器,将宿主机的 80 端口映射到容器的 80 端口上,并将容器放到后台运行:
sudo docker run --name my-nginx -d -p 80:80 nginx
--name
参数指定了容器的名字,-d
参数表示容器在后台运行,-p
参数用于端口映射。
步骤 3: 验证 Nginx 是否运行成功
运行以下命令可以查看容器的状态:
sudo docker ps
如果你能在列表中看到 my-nginx
容器,并且其状态为 "Up",那说明 Nginx 容器正在运行。
你也可以通过浏览器访问主机的 IP 或域名,来进行验证。如果安装成功,你应该能看到 Nginx 的欢迎页面。
步骤 4: 自定义 Nginx 配置(如需)
如果你需要自定义 Nginx 的配置,你可以创建一个配置文件,并挂载到容器内部。首先创建一个本地目录,并在目录内创建你的自定义 nginx.conf
文件:
mkdir -p /path/to/your/nginx-conf vi /path/to/your/nginx-conf/nginx.conf
编写并保存你的自定义 Nginx 配置。然后在运行容器时,使用 -v
参数挂载配置文件:
sudo docker run --name my-nginx -d -p 80:80 -v /path/to/your/nginx-conf/nginx.conf:/etc/nginx/nginx.conf:ro nginx
使用 -v
参数后,本地的配置文件就会覆盖容器内部的默认配置文件。
步骤 5: 重启 Nginx 容器
如果你对 Nginx 的配置进行了更改,需要重启容器以应用更新:
sudo docker restart my-nginx
这将停止并重新启动 my-nginx
容器。
步骤 6: 查看 Nginx 容器日志
若要查看容器的输出和相关日志,可以使用以下命令:
sudo docker logs my-nginx
上述命令将输出 my-nginx
容器的日志。文章来源:https://www.toymoban.com/news/detail-852797.html
五、docker常用的指令:
##查看docker容器版本 docker version ##查看docker容器信息 docker info ##查看docker容器帮助 docker --help ##列出本地images docker images ##含中间映像层 docker images -a ##只显示镜像ID docker images -q ##含中间映像层 docker images -qa ##显示镜像摘要信息(DIGEST列) docker images --digests ##显示镜像完整信息 docker images --no-trunc ##搜索仓库MySQL镜像 docker search mysql ## --filter=stars=600:只显示 starts>=600 的镜像 docker search --filter=stars=600 mysql ## --no-trunc 显示镜像完整 DESCRIPTION 描述 docker search --no-trunc mysql ## --automated :只列出 AUTOMATED=OK 的镜像 docker search --automated mysql ##下载Redis官方最新镜像,相当于:docker pull redis:latest docker pull redis ##下载仓库所有Redis镜像 docker pull -a redis ##下载私人仓库镜像 docker pull bitnami/redis ##单个镜像删除,相当于:docker rmi redis:latest docker rmi redis ##强制删除(针对基于镜像有运行的容器进程) docker rmi -f redis ##多个镜像删除,不同镜像间以空格间隔 docker rmi -f redis tomcat nginx ##删除本地全部镜像 docker rmi -f $(docker images -q) ##新建并启动容器,参数:-i 以交互模式运行容器;-t 为容器重新分配一个伪输入终端;--name 为容器指定一个名称 docker run -i -t --name mycentos ##后台启动容器,参数:-d 已守护方式启动容器 docker run -d mycentos ##启动一个或多个已经被停止的容器 docker start redis ##重启容器 docker restart redis ##top支持 ps 命令参数,格式:docker top [OPTIONS] CONTAINER [ps OPTIONS] ##列出redis容器中运行进程 docker top redis ##查看所有运行容器的进程信息 for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done ##查看redis容器日志,默认参数 docker logs rabbitmq ##查看redis容器日志,参数:-f 跟踪日志输出;-t 显示时间戳;--tail 仅列出最新N条容器日志; docker logs -f -t --tail=20 redis ##查看容器redis从2019年05月21日后的最新10条日志。 docker logs --since="2019-05-21" --tail=10 redis ##使用run方式在创建时进入 docker run -it centos /bin/bash ##关闭容器并退出 exit ##查看正在运行的容器 docker ps ##查看正在运行的容器的ID docker ps -q ##查看正在运行+历史运行过的容器 docker ps -a ##显示运行容器总文件大小 docker ps -s ##停止一个运行中的容器 docker stop redis ##杀掉一个运行中的容器 docker kill redis ##删除一个已停止的容器 docker rm redis ##删除一个运行中的容器 docker rm -f redis ##将rabbitmq容器中的文件copy至本地路径 docker cp rabbitmq:/[container_path] [local_path] ##将主机文件copy至rabbitmq容器 docker cp [local_path] rabbitmq:/[container_path]/
https://flowus.cn/share/ab20fbb1-0bf7-4a75-ba43-4a878396b899?code=A8RVP2
【FlowUs 息流】docker学习文章来源地址https://www.toymoban.com/news/detail-852797.html
到了这里,关于docker新手快速入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!