当前位置: 首页 > article >正文

云服务器与Docker

文章目录

  • 前言
  • 一、云服务器
    • 1.云服务器介绍
    • 2.主要云服务提供商
    • 3.云服务器优势
    • 4.如何选择云服务器
    • 5.有关文献
  • 二、Docker
    • 1.Docker简介
      • (1)Docker是什么
      • (2)Docker主要特点
      • (3)Docker关键组件
    • 2.Docker环境安装
      • (1)Docker官网
      • (2)相关命令
      • (3)Docker环境配置
  • 三、Docker基础操作
    • 1.Docker镜像操作
      • (1)列出镜像
      • (2)拉取镜像
      • (3)删除镜像
    • 2.Docker容器操作
      • (1)创建并运行容器
      • (2)交互式容器
      • (3)守护式容器
      • (4)进入容器
      • (5)查看容器
      • (6)停止与启动容器
      • (8)删除容器
  • 总结


前言

在数字化转型的时代,云计算和容器技术成为了推动技术变革的核心力量。本文为读者提供云服务器和Docker容器的基础知识。无论您是刚接触云计算的新手,还是希望提升技术能力的开发者,希望本文都为您带来实用的指南。从选择适合的云服务器,到搭建Docker环境,再到实际操作Docker镜像与容器,内容较为全面且易于实践。


一、云服务器

1.云服务器介绍

云服务器,也称为虚拟私有服务器(VPS),是一种基于云计算技术的虚拟化服务。它允许用户通过互联网访问和使用服务器资源,而无需维护物理硬件。
云服务器是通过虚拟化技术在物理服务器上创建的多个虚拟实例。每个实例都拥有独立的操作系统、CPU、内存、存储和网络资源。

2.主要云服务提供商

  • 腾讯云:提供多种云服务器产品,包括CVM,支持多种配置选项。
    o 腾讯云CVM产品页面
  • 阿里云:提供ECS云服务器,具备弹性伸缩和多样化配置。
    o 阿里云ECS产品页面
  • 华为云:提供HECS云服务器,强调安全、可靠和高性能。
    o 华为云HECS产品页面

3.云服务器优势

灵活性:根据业务需求快速调整资源配置。
独立性:每个VPS拥有独立的操作系统和资源。
可靠性:云服务提供商通常提供高可用性和数据备份。
成本效益:相比物理服务器,云服务器成本更低,按需付费。

4.如何选择云服务器

当选择云服务器时,考虑以下因素:

  • 操作系统:推荐选择Linux系统,特别是Ubuntu的最新版本,因为它提供了广泛的社区支持和安全性。
  • CPU和内存:根据应用程序的需求选择合适的CPU核心数和内存大小。
  • 存储空间:选择足够的存储空间以支持数据增长。
  • 带宽:确保带宽满足流量需求,避免额外费用。
  • 地域:选择数据中心的地理位置,以减少延迟并满足法规要求。
  • 价格:比较不同云服务提供商的价格和优惠活动。

5.有关文献

(1)2022年阿里云、腾讯云、华为云服务器配置与价格对比,云服务器如何选!
(2)阿里云轻量级服务器和ecs的区别对比
(3)更多云服务器参考

二、Docker

1.Docker简介

(1)Docker是什么

Docker是一个开源的容器化平台,它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中。这个容器可以在任何支持Docker的机器上运行,无论是Linux还是Windows系统。

(2)Docker主要特点

  • 容器化:Docker使用容器来隔离应用程序及其环境,确保在不同环境中的一致性。
  • 可移植性:容器可以在任何安装了Docker的主机上运行,无需担心环境差异。
  • 自动化部署:Docker可以自动化应用程序的部署过程,简化配置和管理工作。
  • 版本控制和组件重用:Docker支持容器镜像的版本控制,便于组件的重用和共享。
  • 微服务架构:Docker容器非常适合微服务架构,有助于实现服务的解耦和独立部署。

(3)Docker关键组件

  • Docker Daemon(守护进程)
    o 在宿主机上运行的后台服务。
    o 负责构建、运行和分发容器。
  • Docker Client(客户端)
    o 与Docker Daemon交互的用户界面发送请求
    o 给Daemon以执行命令,如构建镜像、运行容器等。
  • Docker Image(镜像)
    o 只读模板,包含了运行容器所需的所有内容一代码、运行时、库、环境变量和配置文件。
    o 镜像是分层的,允许共享和重用。
  • Docker Container(容器)
    o 镜像的运行实例。
    o 容器是隔离的沙盒,拥有自己的文件系统、网络设置、进程空间等。
    在这里插入图片描述

2.Docker环境安装

(1)Docker官网

官网: https://www.docker.com/
自行上网查阅资料于 kali 上安装配置 docker

(2)相关命令

● 查看docker服务状态

systemctl status docker

 
● 启动docker服务

systemctl start docker

 
● 开启自启动docker服务

systemctl enable docker

 
● 安装指令:最新版 docker 自带 compose 命令选项,跟 docker-compose 使用是一样的,可以不用额外安装即可使用

docker compose

 

(3)Docker环境配置

配置Docker国内镜像:由于很多 docker 镜像存储于位于国外的 dockerhub 镜像仓库中,由于国内网络访问国外服务存在问题,我们可以通过配置国内镜像,从而加快 docker 镜像的拉取

三、Docker基础操作

1.Docker镜像操作

(1)列出镜像

● 要查看本地主机上的Docker镜像列表,可以使用以下命令:

docker image ls -a
docker images -a

● 显示如下信息

名称描述
REPOSITORY镜像所在的仓库名称
TAG镜像标签
IMAGE ID镜像 ID
CREATED镜像的创建日期(不是获取该镜像的日期)
SIZE镜像大小

(2)拉取镜像

● 要下载公共仓库中的镜像,可以使用docker image pull命令,后跟镜像的名称和标签。

例如,拉取hello-world镜像:

sudo docker image pull docker.io/library/hello-world:latest
命令解释
dockerDocker 命令行工具的命令前缀
image指定 Docker 命令作用于镜像
pull拉取操作,用于从远程仓库下载镜像到本地
docker.ioDocker Hub 的域名,是 Docker 官方镜像仓库的地址
libraryDocker Hub 上的默认命名空间,用于存放官方提供的镜像
hello-world镜像的名称
latest镜像的标签,latest 是 Docker 镜像的默认标签

docker.io:这是Docker Hub的域名,是Docker官方镜像仓库的地址。通常在不指定仓库地址的
情况下,Docker会默认使用docker.io

sudo docker image pull library/hello-world

library:这是Docker Hub上的默认命名空间,用于存放官方提供的镜像。使用 library 命名空可以确保你拉取的是官方维护的镜像。由于Docker官方的镜像默认位于 library 组下,因此可以省略 library

sudo docker image pull hello-world

hello-world:这是镜像的名称。hello-world是一个非常基础的镜像,通常用于验证Docker是
否安装成功。
latest:这是镜像的标签。Docker镜像可以有多个标签,用于区分不同的版本。latest标签通岸
用于表示镜像的最新版本。不指定镜像标签,默认拉取latest标签镜像

(3)删除镜像

要删除一个镜像,可以使用docker image rmdocker rmi命令,后面跟上镜像名称或镜像ID。

● 指定镜像名称

sudo docker image rm hello-world

指定镜像ID
例如,hello-world的镜像ID为feb5d4fea6a5每个人的ID大概率是不一样的,请修改为自己镜像的实际lD

sudo docker rmi feb5d4fea6a5

注意:
● 如果镜像正在被一个或多个容器使用,则无法删除。需要先删除使用该镜像的容器。
● 在执行镜像操作时,请确保您使用的是正确的镜像名称和标签。
● 删除镜像前,请确保没有运行的容器依赖于该镜像,以免影响容器的正常运行。

2.Docker容器操作

(1)创建并运行容器

创建并运行一个容器,可以使用 docker run 命令,格式如下:

docker run [option] image_name [command] 

● option是可选参数
● image_name是镜像的名称
● command是在容器启动时执行的命令

(2)交互式容器

创建一个交互式容器,命名为 mycentos ,并允许用户登录并执行命令:

sudo docker run -it --name=mycentos centos /bin/bash

-i:以交互模式运行容器。
-t:分配一个伪终端,容器启动后会进入容器命令行
--name:为容器指定一个名称。
/bin/bash:启动容器后在容器中打开一个bash

在容器中可以随意执行linux命令,就是一个ubuntu的环境,当执行exit命令退出时,该容器也随之停止。

(3)守护式容器

创建一个守护式容器,命名为 mycentos2 ,容器在后台运行,不会自动登录:

sudo docker run -dit --name=mycentos2 centos

-i:以交互模式运行容器。
-t:分配一个伪终端,容器启动后会进入容器命令行
-d:以守护式模式运行容器,在后台运行。
--name:为容器指定一个名称。

如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。在容器内部exit退出时,容器也不会停止。

(4)进入容器

要进入正在运行的容器:

docker exec -it container_name_or_id command

exec:用于在已经运行的容器中执行命令
-i:以交互模式运行容器。
-t:分配一个伪终端,容器启动后会进入容器命令行
container_name_or_id 表示容器名或容器id
command 表示进入容器后执行的第一个命令

例如,进入名为mycentos2的容器并执行/bin/bash,打开一个Bash shell终端:

sudo docker exec -it mycentos2 /bin/bash

注意:
● 容器必须已经存在并且正在运行,否则这个命令会失败。
● 如果容器中没有安装Bash,这个命令也会失败。通常,大多数基于Linux的镜像都会包含Bash,但某些轻量级的镜像可能不包含。
● 如果你想要在容器中执行其他命令而不是Bash,你可以将 /bin/bash 替换为其他命令。

(5)查看容器

● 列出正在运行的容器:

sudo docker container ls

● 列出所有容器(包括停止的):

sudo docker container ls --all

● 简介命令:

sudo docker ps
sudo docker ps -a

(6)停止与启动容器

● 停止一个已经在运行的容器:

docker container stop 容器名或容器id

docker stop 容器名或容器id

● 启动一个已经停止的容器

docker container start 容器名或容器id

docker start 容器名或容器id

● 强制停止一个运行中的容器:

docker container kill 容器名或容器id

docker kill 容器名或容器id

(8)删除容器

● 删除一个容器:

docker container rm 容器名或容器id

docker rm 容器名或容器id

注意:删除容器前,请确保容器已经停止。如果容器正在运行,需要先停止再删除。


总结

通过本文的学习,我们了解了云服务器的概念及其选择依据,熟悉了主流云服务商的特点与产品优势;同时,简单掌握了Docker的核心功能、环境搭建及基础操作。Docker的容器化技术为开发和部署提供了高度灵活性与效率,结合其强大的镜像管理与微服务支持,可以满足多样化的业务需求。更进一步,希望可以借助Docker的容器化特性,搭建专属的靶场环境,模拟网络攻击场景,提升技术实战能力


如果你觉得这篇文章对你有帮助,欢迎点赞,你的支持是我分享更多免费优质内容的动力!


http://www.kler.cn/a/529193.html

相关文章:

  • [EAI-028] Diffusion-VLA,能够进行多模态推理和机器人动作预测的VLA模型
  • Docker 部署 GLPI(IT 资产管理软件系统)
  • 写好简历的三个关键认知
  • UE5制作视差图
  • DeepSeek-R1 论文解读 —— 强化学习大语言模型新时代来临?
  • 使用 Tauri 2 + Next.js 开发跨平台桌面应用实践:Singbox GUI 实践
  • 分布式事务组件Seata简介与使用,搭配Nacos统一管理服务端和客户端配置
  • 【华为OD-E卷 - 报数游戏 100分(python、java、c++、js、c)】
  • doris:JSON导入数据
  • Games104——引擎工具链基础
  • Python的那些事第八篇:Python中的类与对象
  • MusicFree-开源的第三方音乐在线播放和下载工具, 支持歌单导入[对标落雪音乐]
  • Nginx知识
  • 什么是Javascript,有什么特点
  • 【cocos官方案例改】跳跃牢猫
  • 【VUE】简述Vue中mixin、extends 的覆盖逻辑
  • NLP深度学习 DAY5:Sequence-to-sequence 模型详解
  • MySQL复制扩展功能
  • AI基本概念之——张量(Tensor)
  • 遗传算法与深度学习实战(33)——WGAN详解与实现
  • 小巧免费,本地视频播放器MPC-BE
  • 理解 InnoDB 如何处理崩溃恢复
  • Java小白入门教程:Object
  • 一个 windows 自动语音识别案列
  • 我用Ai学Android Jetpack Compose之LazyColumn
  • 【LLM-agent】(task2)用llama-index搭建AI Agent