云服务器与Docker

1、云服务器

三家厂商

1
2
3
https://cloud.tencent.com/product/cvm		腾讯云
https://www.aliyun.com/product/ecs/ 阿里云
https://www.huaweicloud.com/theme/512014-1-G 华为云

一台通过公网访问的虚拟服务器,可以是Windows、Linux系统。

云服务器VPS(Virtual Private Server)是一种虚拟化技术,它将物理服务器划分为多个独立的虚拟服务器。每个虚拟服务器都具有自己的操作系统、磁盘空间、CPU资源和内存,并且可以像独立的服务器一样运行和管理。

使用云服务器VPS,用户可以获得一个独立的虚拟环境,享受与实际服务器相似的灵活性和可靠性。用户可以根据自己的需求选择服务器的配置,包括CPU核数、内存大小、存储空间等。此外,用户还可以根据需要安装和配置所需的软件和应用程序。

云服务器VPS具有以下优点:

  • 灵活性:用户可以根据需要轻松扩展活所系虚拟服务器的资源。
  • 独立性:每个虚拟服务器都是相互隔离的,用户之间不会相互干扰。
  • 可靠性:云服务器VPS通常具有高可用性和冗余机制,确保您的应用在物理服务器故障时仍然可用。
  • 成本效益:相对于购买和维护实际的物理服务器,使用云服务器VPS可以更经济高效。

总之,云服务器VPS是一种提供虚拟化的云计算服务,使用户能够以较低的成本和更大的灵活性来托管和管理应用程序的网站。

2、Docker

Docker简介

  • docker是什么

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

  • Docker组成部分

Docker Client客户端

Docker Daemon守护进程

Docker Image镜像

Docker Container容器

Docker环境安装

1、安装必要的系统工具

1
2
3
sudo apt update

sudo apt -y install apt-transport-https ca-certificates curl software-properties-common

2、添加 Docker PGP key

1
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-ce-archive-keyring.gpg

3、写入软件源信息

1
printf '%s\n' "deb https://download.docker.com/linux/debian bullseye stable" | sudo tee /etc/apt/sources.list.d/docker-ce.list

4、更新APT

1
sudo apt update

5、如果安装了旧版本的Docker,先卸载他们

1
sudo apt remove docker docker-engine docker.io

6、安装Docker

1
apt install docker-ce docker-ce-cli containerd.io

7、查看Docker状态

1
systemctl status docker

8、启动docker

1
systemctl start docker

9、开机自动启动

1
systemctl enable docker

安装docker-compose

github上下载docker-compose-linux-x86_64

1
https://github.com/docker/compose/releases

然后复制到/usr/local/bin/目录中。

加上执行权限

1
chmod +x /usr/local/bin/docker-compose

Docker基础操作

1、Docker镜像操作

  • 列出镜像
1
2
3
4
5
6
7
8
docker image ls -a
docker images

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

image-20230916103431008

  • 拉取镜像
1
docker image pull library/hello-world
1
2
3
4
docker image pull:拉取 image 文件的命令
library/hello-world:image 文件在仓库里面的位置
library:是 image 文件所在的组
hello-world:是 image 文件的名字

由于Docker官方提供的image文件,都放在library组里面,所以它是默认组,可以省略。因此,上面的命令可以下称下面这样:

1
docker image pull hello-world
  • 删除镜像
1
2
3
4
5
6
docker image rm 镜像名或镜像id
docker rmi 镜像名或镜像id
如:

docker image rm hello-world
docker rmi feb5d9fea6a5

Docker容器操作

  • 创建容器
1
docker run [option] 镜像名 [向启动容器中传入的命令]

常用可选参数说明:

1
2
3
4
5
6
7
8
-i 表示以“交互模式”运行容器
-t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。
--name 为创建的容器命名
-v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可以使 用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上。
-d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。
-p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
-e 为容器设置环境变量
--network=host 表示将主机的网络环境映射到容器中,容器的网络与主机相同
  • 交互式容器
1
2
3
4
5
# 创建一个交互式容器,并命名为mycentos

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

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

image-20230916104321719

  • 守护式容器
1
2
3
4
5
# 创建一个守护式容器,并命名为mycentos2

docker run -dit --name=mycentos2 centos

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

docker exec -it 容器名或容器id进入后执行的第一个命令

例如:

1
docker exec -it mycentos /bin/sh
  • 查看容器
1
2
3
4
5
# 列出本机正在运行的容器
docker ps

# 列出本机所有容器,包括已经终止运行的
docker ps -a
  • 停止与启动容器
1
2
3
4
5
6
7
8
# 停止一个已经在运行的容器
docker stop 容器名或容器id

# 启动一个已经停止的容器
docker start 容器名或容器id

# kill掉一个已经在运行的容器
docker kill 容器名或容器id
  • 删除容器
1
docker rm 容器名或容器id

将容器保存为镜像

1
2
3
# docker commit 容器名 镜像名

docker commit mycentos3 mycentos3

镜像的备份与迁移

可以通过save命令将镜像打包成文件,拷贝给别人使用

1
2
3
# docker save -o 保存的文件名 镜像名

docker save -o ./mycentos3.tar mycentos3

对方在拿到镜像文件后,可以通过load方法,将镜像加载到本地

1
docker load -i ./centos.tar