Docker

Docker

Docker 教程 | 菜鸟教程

云服务器介绍(vps)

vps介绍

虚拟专用服务器(英语:Virtual private server,缩写为VPS),是将一台服务器分割成多个虚拟专用服务器的服务。实现VPS的技术分为容器技术和虚拟机技术。在容器或虚拟机中,每个VPS都可分配独立公网IP地址、独立操作系统、实现不同VPS间磁盘空间、内存CPU资源、进程和系统配置的隔离,为用户和应用程序模拟出“独占”使用计算资源的体验。VPS可以像独立服务器一样,重装操作系统,安装程序,单独重启服务器。VPS为用户提供了管理配置的自由,可用于企业虚拟化,也可以用于IDC资源租用。

IDC资源租用由VPS提供商提供。不同VPS提供商所使用的硬件、软件的差异,及销售策略的不同,VPS的使用体验也有较大差异。尤其是VPS提供商超卖,导致实体服务器超负荷时,VPS性能将受到极大影响。相对来说,容器技术比虚拟机技术效率更高,成本更低,但功能更少,更易超卖,一般来说容器VPS的价格都低于虚拟机VPS的价格。

这些VPS主机以最大化的效率共享硬件软件许可证以及管理资源。每个VPS主机都可分配独立公网IP地址、独立操作系统、独立存储空间、独立内存、独立CPU资源、独立执行程序和独立系统配置等。VPS主机用户可在服务器上自行安装程序,单独重启主机。

在中国大陆等网络遭审查封锁的地区,境外VPS被广泛用于搭建VPN通道、Proxy [1]

Docker简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

docker以及docker-compose安装过程 省略

docker安装与配置

docker安装

在Linux虚拟机中使用以下命令

git clone https://gitee.com/yijingsec/LinuxEnvConfig.git

cd LinuxEnvConfig

sudo bash LinuxEnvConfig.sh

执行完成后,在选择界面选择”安装Docker”

docker换源

Docker换源

Docker的默认镜像源是国外的网站,需要翻墙才可以访问,所以需要对Docker进行换源

使用vim /etc/docker/daemon.json 命令,写入以下内容后保存退出

{
"registry-mirrors": [
"https://hub.uuuadc.top",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.ckyl.me",
"https://docker.awsl9527.cn"
]
}

换源完成后需要重启Docker

使用systemctl daemon-reload 命令重新加载Docker源

使用systemctl restart docker 命令重启Docker

systemctl daemon-reload
systemctl restart docker

Docker基础操作

Docker基本操作_docker 基本操作-CSDN博客

【环境搭建】Docker镜像相关操作(切换镜像源、查询、获取、查看、创建、上传、保存、删除等)_查看docker镜像源-CSDN博客

Docker命令

启动Docker

systemctl start docker

查看Docker状态

systemctl status docker

设置Docker开机自启

systemctl enable docker

Docker镜像操作

列出镜像

docker image ls -a
docker images

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

拉取镜像

docker image pull library/hello-world
拉取名为hello-world的镜像文件

docker image pull:抓取 image 文件的命令
library/hello-world:image 文件在仓库里面的位置
library:是 image 文件所在的组
hello-world:是 image 文件的名字

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

docker image pull hello-world

删除镜像

docker image rm 镜像名或镜像id
docker rmi 镜像名或镜像id

如:
docker image rm hello-world
docker rmi feb5d9fea6a5
镜像id可以只写开头几个字符

正在运行容器的镜像无法删除(就相当于正在打开文件的文件夹无法删除)

这里的rmi的i表示image

Docker容器操作

创建容器

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

-i 表示以“交互模式”运行容器
-t 表示容器启动后会进入其命令行。
加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。

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

#创建一个交互式容器,并命名为mycentos
docker run -it --name=mycentos centos /bin/bash

#创建一个守护式容器,并命名为mycentos2
docker run -dit --name=mycentos2 centos

进入运行容器

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

例如:
docker exec -it mycentos2 /bin/bash
进入后执行的第一个命令在docker ps里可以看到

查看容器

列出本机正在运行的容器
docker container ls
docker ps

列出本机所有容器,包括已经终止运行的
docker container ls --all
docker ps -a

停止与启动容器

停止一个已经在运行的容器
docker container stop 容器名或容器id
docker stop 容器名或容器id

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

kill掉一个已经在运行的容器
docker container kill 容器名或容器id
docker kill 容器名或容器id

删除容器

docker container rm 容器名或容器id
docker rm 容器名或容器id

将容器保存为镜像

docker commit 容器名 镜像名

镜像备份与迁移

将镜像打包

save命令可以将镜像打包成压缩文件,打包后可以拷贝给别人使用(如果在服务器中,对方可以通过访问存放路径,然后下载)

docker save -o 保存路径 镜像名
例如:
docker save -o ./文件名.tar 镜像名

.tar是Linux的压缩包后缀

将镜像文件加载到本地

docker load -i 保存路径
例如:
docker load -i ./文件名

Docker搭建Vulhub靶场

下载项目

当前靶场镜像已下载到/opt目录下

启动环境

进入vulhub文件夹下的某个漏洞文件夹下,找到相应的.yml文件

在该目录下输入

docker-compose up -d

:::info
注意!在启动另一个漏洞靶场时,需要先把上一个靶场容器关闭,不然会占用8080端口导致启动不成功

:::

访问测试

docker ps

在本机浏览器中访问