在数字化转型的时代,云计算和容器技术成为了推动技术变革的核心力量。本文为读者提供云服务器和Docker容器的基础知识。无论您是刚接触云计算的新手,还是希望提升技术能力的开发者,希望本文都为您带来实用的指南。从选择适合的云服务器,到搭建Docker环境,再到实际操作Docker镜像与容器,内容较为全面且易于实践。
云服务器,也称为虚拟私有服务器(VPS),是一种基于云计算技术的虚拟化服务。它允许用户通过互联网访问和使用服务器资源,而无需维护物理硬件。
云服务器是通过虚拟化技术在物理服务器上创建的多个虚拟实例。每个实例都拥有独立的操作系统、CPU、内存、存储和网络资源。
灵活性:根据业务需求快速调整资源配置。
独立性:每个VPS拥有独立的操作系统和资源。
可靠性:云服务提供商通常提供高可用性和数据备份。
成本效益:相比物理服务器,云服务器成本更低,按需付费。
当选择云服务器时,考虑以下因素:
(1)2022年阿里云、腾讯云、华为云服务器配置与价格对比,云服务器如何选!
(2)阿里云轻量级服务器和ecs的区别对比
(3)更多云服务器参考
Docker是一个开源的容器化平台,它允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中。这个容器可以在任何支持Docker的机器上运行,无论是Linux还是Windows系统。
官网: https://www.docker.com/
自行上网查阅资料于 kali 上安装配置 docker
● 查看docker服务状态
systemctl status docker
● 启动docker服务
systemctl start docker
● 开启自启动docker服务
systemctl enable docker
● 安装指令:最新版 docker 自带 compose 命令选项,跟 docker-compose 使用是一样的,可以不用额外安装即可使用
docker compose
配置Docker国内镜像:由于很多 docker 镜像存储于位于国外的 dockerhub 镜像仓库中,由于国内网络访问国外服务存在问题,我们可以通过配置国内镜像,从而加快 docker 镜像的拉取
● 要查看本地主机上的Docker镜像列表,可以使用以下命令:
docker image ls -a
docker images -a
● 显示如下信息
名称 | 描述 |
---|---|
REPOSITORY | 镜像所在的仓库名称 |
TAG | 镜像标签 |
IMAGE ID | 镜像 ID |
CREATED | 镜像的创建日期(不是获取该镜像的日期) |
SIZE | 镜像大小 |
● 要下载公共仓库中的镜像,可以使用docker image pull
命令,后跟镜像的名称和标签。
例如,拉取hello-world
镜像:
sudo docker image pull docker.io/library/hello-world:latest
命令 | 解释 |
---|---|
docker | Docker 命令行工具的命令前缀 |
image | 指定 Docker 命令作用于镜像 |
pull | 拉取操作,用于从远程仓库下载镜像到本地 |
docker.io | Docker Hub 的域名,是 Docker 官方镜像仓库的地址 |
library | Docker 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
标签镜像
要删除一个镜像,可以使用docker image rm
或docker rmi
命令,后面跟上镜像名称或镜像ID。
● 指定镜像名称
sudo docker image rm hello-world
● 指定镜像ID
例如,hello-world的镜像ID为feb5d4fea6a5
,每个人的ID大概率是不一样的,请修改为自己镜像的实际lD
sudo docker rmi feb5d4fea6a5
注意:
● 如果镜像正在被一个或多个容器使用,则无法删除。需要先删除使用该镜像的容器。
● 在执行镜像操作时,请确保您使用的是正确的镜像名称和标签。
● 删除镜像前,请确保没有运行的容器依赖于该镜像,以免影响容器的正常运行。
创建并运行一个容器,可以使用 docker run
命令,格式如下:
docker run [option] image_name [command]
● option是可选参数
● image_name是镜像的名称
● command是在容器启动时执行的命令
创建一个交互式容器,命名为 mycentos
,并允许用户登录并执行命令:
sudo docker run -it --name=mycentos centos /bin/bash
● -i
:以交互模式运行容器。
● -t
:分配一个伪终端,容器启动后会进入容器命令行
● --name
:为容器指定一个名称。
● /bin/bash
:启动容器后在容器中打开一个bash
在容器中可以随意执行linux命令,就是一个ubuntu的环境,当执行exit命令退出时,该容器也随之停止。
创建一个守护式容器,命名为 mycentos2
,容器在后台运行,不会自动登录:
sudo docker run -dit --name=mycentos2 centos
● -i
:以交互模式运行容器。
● -t
:分配一个伪终端,容器启动后会进入容器命令行
● -d
:以守护式模式运行容器,在后台运行。
● --name
:为容器指定一个名称。
如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。在容器内部exit退出时,容器也不会停止。
要进入正在运行的容器:
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
替换为其他命令。
● 列出正在运行的容器:
sudo docker container ls
● 列出所有容器(包括停止的):
sudo docker container ls --all
● 简介命令:
sudo docker ps
sudo docker ps -a
● 停止一个已经在运行的容器:
docker container stop 容器名或容器id
docker stop 容器名或容器id
● 启动一个已经停止的容器
docker container start 容器名或容器id
docker start 容器名或容器id
● 强制停止一个运行中的容器:
docker container kill 容器名或容器id
docker kill 容器名或容器id
● 删除一个容器:
docker container rm 容器名或容器id
docker rm 容器名或容器id
注意:删除容器前,请确保容器已经停止。如果容器正在运行,需要先停止再删除。
通过本文的学习,我们了解了云服务器的概念及其选择依据,熟悉了主流云服务商的特点与产品优势;同时,简单掌握了Docker的核心功能、环境搭建及基础操作。Docker的容器化技术为开发和部署提供了高度灵活性与效率,结合其强大的镜像管理与微服务支持,可以满足多样化的业务需求。更进一步,希望可以借助Docker的容器化特性,搭建专属的靶场环境,模拟网络攻击场景,提升技术实战能力。
如果你觉得这篇文章对你有帮助,欢迎点赞,你的支持是我分享更多免费优质内容的动力!