简单使用docker,使你的vps更加高效
简单使用docker,使你的vps更加高效
前言
我这里是使用的是CentOS 7 ,由于linux发行版本问题,可能有出入,请多包涵
什么是docker
Docker 是一种用于开发、部署和运行应用程序的开源平台,它利用容器化技术来实现应用程序的打包和隔离
容器化技术
容器化是一种轻量级的虚拟化技术,它允许你将应用程序及其依赖项打包到一个独立的容器中。每个容器就像一个小型的、自给自足的虚拟机,包含了运行应用程序所需的一切,如代码、运行时环境、系统工具和库等。
Docker 的优势
环境一致性:Docker 可以确保应用程序在开发、测试和生产环境中的一致性。开发人员可以在本地创建一个与生产环境相同的 Docker 容器,这样就可以避免因环境差异导致的问题。
资源利用率高:相较于传统虚拟机,Docker 容器不需要额外的操作系统,它直接运行在宿主机的内核上,因此占用的资源更少,启动速度更快。
便于部署和扩展:Docker 容器可以快速部署到任何支持 Docker 的环境中,无论是物理服务器、虚拟机还是云平台。同时,通过 Docker 的集群管理工具,可以轻松实现应用程序的扩展和负载均衡。
隔离性:每个 Docker 容器都是相互隔离的,一个容器的故障不会影响其他容器的运行,提高了应用程序的稳定性和安全性。
Docker 的核心组件
镜像(Image):是一个只读的模板,包含了创建 Docker 容器所需的所有文件和配置信息。可以把镜像看作是应用程序的快照,它可以用来创建多个相同的容器。
容器(Container):是镜像的运行实例。当你启动一个镜像时,就会创建一个容器。容器可以被启动、停止、删除等操作。
仓库(Registry):是用来存储和分发 Docker 镜像的地方。你可以将自己创建的镜像上传到仓库中,也可以从仓库中下载别人共享的镜像。常见的公共仓库有 Docker Hub。
Docker 的使用场景
微服务架构:Docker 可以将每个微服务打包成一个独立的容器,方便进行部署、管理和扩展。
持续集成和持续部署(CI/CD):在 CI/CD 流程中,使用 Docker 可以确保应用程序在不同环境中的一致性,提高部署效率。
开发环境管理:开发人员可以使用 Docker 快速搭建和配置开发环境,避免因环境配置问题导致的开发效率低下。
为什么要使用docker
容器化技术
容器化是一种轻量级的虚拟化技术,它允许你将应用程序及其依赖项打包到一个独立的容器中。每个容器就像一个小型的、自给自足的虚拟机,包含了运行应用程序所需的一切,如代码、运行时环境、系统工具和库等。
Docker 的优势
环境一致性:Docker 可以确保应用程序在开发、测试和生产环境中的一致性。开发人员可以在本地创建一个与生产环境相同的 Docker 容器,这样就可以避免因环境差异导致的问题。
资源利用率高:相较于传统虚拟机,Docker 容器不需要额外的操作系统,它直接运行在宿主机的内核上,因此占用的资源更少,启动速度更快。
便于部署和扩展:Docker 容器可以快速部署到任何支持 Docker 的环境中,无论是物理服务器、虚拟机还是云平台。同时,通过 Docker 的集群管理工具,可以轻松实现应用程序的扩展和负载均衡。
隔离性:每个 Docker 容器都是相互隔离的,一个容器的故障不会影响其他容器的运行,提高了应用程序的稳定性和安全性。
Docker 的核心组件
镜像(Image):是一个只读的模板,包含了创建 Docker 容器所需的所有文件和配置信息。可以把镜像看作是应用程序的快照,它可以用来创建多个相同的容器。
容器(Container):是镜像的运行实例。当你启动一个镜像时,就会创建一个容器。容器可以被启动、停止、删除等操作。
仓库(Registry):是用来存储和分发 Docker 镜像的地方。你可以将自己创建的镜像上传到仓库中,也可以从仓库中下载别人共享的镜像。常见的公共仓库有 Docker Hub。
Docker 的使用场景
微服务架构:Docker 可以将每个微服务打包成一个独立的容器,方便进行部署、管理和扩展。
持续集成和持续部署(CI/CD):在 CI/CD 流程中,使用 Docker 可以确保应用程序在不同环境中的一致性,提高部署效率。
开发环境管理:开发人员可以使用 Docker 快速搭建和配置开发环境,避免因环境配置问题导致的开发效率低下。
为什么要使用docker
环境一致性
在软件开发过程中,常常会遇到 “在我机器上能运行” 的问题,这是因为不同环境(开发、测试、生产)的配置和依赖可能不同。而 Docker 能将应用及其依赖打包成镜像,在不同环境中创建相同的容器来运行应用,确保应用在各环境的表现一致。比如,一个基于 Python Flask 框架的 Web 应用,开发时使用的是 Python 3.8 以及特定版本的 Flask 库,通过 Docker 可以把这些环境和依赖打包,在测试和生产环境中创建完全相同的运行环境。
资源利用率高
和传统虚拟机不同,Docker 容器直接运行在宿主机的内核上,不需要额外的操作系统开销。这意味着多个容器可以共享同一个宿主机的操作系统资源,从而提高资源利用率。例如,在一台服务器上可以同时运行多个不同的 Docker 容器,每个容器运行一个独立的应用,它们之间相互隔离,但又共享服务器的硬件资源,降低了硬件成本。
快速部署与扩展
Docker 容器的启动速度非常快,通常只需几秒钟,这使得应用的部署变得高效。而且,当应用的访问量增加时,可以通过复制容器来快速扩展应用的处理能力。例如,在电商网站的促销活动期间,可以迅速增加运行应用的容器数量,以应对高并发的访问请求。
隔离性与安全性
每个 Docker 容器都是相互隔离的,一个容器的故障不会影响其他容器的运行。同时,容器提供了一定程度的安全隔离,减少了应用之间的相互影响。例如,在一个多租户的环境中,不同租户的应用可以运行在各自的 Docker 容器中,避免了相互干扰和数据泄露的风险。
版本控制与回滚
Docker 镜像支持版本控制,你可以为每个镜像版本打上标签,方便管理和追踪。如果应用出现问题,可以轻松回滚到之前的镜像版本。例如,当你对应用进行了更新,但发现新的版本存在 bug 时,可以迅速将容器回滚到上一个稳定的镜像版本。
便于团队协作
在团队开发中,Docker 可以提供统一的开发环境。开发人员可以基于同一个 Docker 镜像进行开发,避免了因环境差异导致的问题。同时,运维人员也可以使用相同的镜像进行部署,提高了团队协作的效率。例如,开发团队和运维团队可以通过共享 Docker 镜像来确保应用的开发和部署流程的一致性
docker的操作
CentOS 系统上安装 Docker
卸载旧版本(如果有)
1 | sudo yum remove docker \ |
设置 Docker 软件源
1 | sudo yum install -y yum-utils |
安装 Docker
1 | sudo yum install docker-ce docker-ce-cli containerd.io -y |
启动并设置 Docker 开机自启
1 | sudo yum install docker-ce docker-ce-cli containerd.io -y |
验证 Docker 是否安装成功
1 | sudo docker run hello-world |
docker的操作
镜像操作
搜索镜像
若要从 Docker Hub 搜索所需镜像,可使用 docker search 命令。例如搜索 nginx 镜像:
1 | docker search nginx |
拉取镜像
使用 docker pull 命令从 Docker 仓库拉取镜像。以拉取 nginx 官方最新版本镜像为例:
1 | docker pull nginx |
若要指定版本,可在镜像名后加冒号和版本号,如拉取 nginx 1.21.6 版本:
1 | docker pull nginx:1.21.6 |
查看本地镜像
使用 docker images 命令查看本地已有的镜像:
1 | docker images |
删除本地镜像
使用 docker rmi 命令删除本地镜像。例如删除 nginx 镜像:
1 | docker rmi nginx |
构建镜像
可以使用 Dockerfile 构建自定义镜像。假设已有一个简单的 Dockerfile,可在其所在目录下执行 docker build 命令构建镜像:
1 | docker build -t my-nginx:1.0 . |
其中 -t 用于指定镜像的名称和标签,. 表示使用当前目录下的 Dockerfile。
容器操作
创建并启动容器
使用 docker run 命令创建并启动容器。例如启动一个 nginx 容器:
1 | docker run -d -p 8080:80 nginx |
其中 -d 表示让容器在后台运行,-p 8080:80 表示将宿主机的 8080 端口映射到容器的 80 端口。
查看运行中的容器
使用 docker ps 命令查看当前正在运行的容器:
1 | docker ps |
若要查看所有容器(包括已停止的),可使用 docker ps -a 命令。
停止容器
使用 docker stop 命令停止运行中的容器。例如停止名为 my-nginx-container 的容器:
1 | docker stop my-nginx-container |
启动已停止的容器
使用 docker start 命令启动已停止的容器:
1 | docker start my-nginx-container |
进入容器
使用 docker exec 命令进入正在运行的容器。例如进入 my-nginx-container 容器的交互式终端:
1 | docker exec -it my-nginx-container /bin/bash |
其中 -it 表示以交互式终端模式进入容器。
删除容器
使用 docker rm 命令删除已停止的容器:
1 | docker rm my-nginx-container |
若要删除正在运行的容器,可添加 -f 选项强制删除:
1 | docker rm -f my-nginx-container |
仓库操作
登录 Docker 仓库
使用 docker login 命令登录 Docker 仓库:
1 | docker login |
之后按照提示输入用户名和密码。
推送镜像到仓库
先给本地镜像打标签,使其符合仓库的命名规则,再使用 docker push 命令推送镜像。例如将本地的 my-nginx:1.0 镜像推送到 Docker Hub:
1 | docker tag my-nginx:1.0 your-dockerhub-username/my-nginx:1.0 |
结语
1、了解什么docker技术
2、为什么要使用docker技术
3、centos 上部署docker服务
4、docker的操作类型(镜像、容器、仓库)







