freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

从vmware到docker 01-小白的docker学习笔记
周煜暖 2023-04-08 19:22:00 171023
所属地 香港

docker简介

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

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

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

docker与vmware区别

1.VMware是属于完全虚拟机化,而docker则是轻量级虚拟化(只虚拟出来容器所需要的资源)

2.传统的虚拟机是虚拟一整套硬件后,在其运行一个完整的操作系统,而容器内的应用进程直接运行于宿主的内核,容器没有自己的内核并且也没有进行硬件虚拟。

3.VMware对硬件的利用率在30%左右,而docker对硬件的利用率在60%-80%左右。

4.但是docker相当对于虚拟机来说安全性没有那么高

可以这么理解docker本身他不是容器,他只是负责管理容器

dockers基础知识

镜像(images):静态文件, 默认拉取镜像是采用的是http/https(加了一层安全协议)协议。可类比为vmware的iso镜像

容器(container):动态,有生命周期(启动就有没启动就没有,up)容器与容器之间是相互隔离的(共享资源)。可类比为vmware中创建的虚拟机,ova这些的。

仓库(registry):有几十万个镜像(公共仓库,都是大家推上去的镜像然后共享)dockerhub从这里拉取镜像会非常慢(因为是国外的网站) 阿里云注册(建议可以注册一个方便学习使用)获得阿里云加速器(daemon.json)。可类比为镜像的github。

docker安装

Linux docker 安装

使用官方安装脚本自动安装 安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

或者使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

手动安装(略,菜鸟教程上有,感觉比较麻烦)

windows docker 安装

windows docker 安装

Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境。

Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。

因此,Docker 必须部署在 Linux 内核的系统上。如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。

在 Windows 上部署 Docker 的方法都是先安装一个虚拟机,并在安装 Linux 系统的的虚拟机中运行 Docker。

docker镜像加速

docker国内加速器

国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

科大镜像:https://docker.mirrors.ustc.edu.cn/
网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com

当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。

阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了:

Ubuntu16.04+、Debian8+、CentOS7

对于使用systemd的系统,请在/etc/docker/daemon.json中写入如下内容(如果文件不存在请新建该文件):

{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}

之后重新启动服务:

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
检查加速器是否生效

检查加速器是否生效配置加速器之后,如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行执行 docker info,如果从结果中看到了如下内容,说明配置成功。

$ docker info
Registry Mirrors:
https://reg-mirror.qiniu.com

docker使用代理拉取镜像

1、创建配置目录

sudo mkdir -p /etc/systemd/system/docker.service.d

2、添加环境变量

sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf

在配置文件中添加以下内容(其中,proxy-addr为虚拟机ip地址,port为端口号(Clash是7890):

[Service]
Environment="HTTP_PROXY=http://proxy-addr:port/" # 代理服务器地址
Environment="HTTPS_PROXY=http://proxy-addr:port/" # https
Environment="NO_PROXY=localhost,127.0.0.1" # 哪些地址不需要走代理

3、更新配置并重启服务

sudo systemctl daemon-reload
sudo systemctl restart docker`

4、验证

docker search centos

不报错即docker代理设置成功。

docker使用

使用流程:拉取镜像--使用容器

Docker镜像使用

查找镜像

我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。

runoob@runoob:~$  docker search httpd

NAME: 镜像仓库源的名称

DESCRIPTION: 镜像的描述

OFFICIAL: 是否 docker 官方发布

stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

AUTOMATED: 自动构建

拖取镜像

我们决定使用上图中的 httpd 官方版本的镜像,使用命令 docker pull 来下载镜像

删除镜像

镜像删除使用 docker rmi 命令,比如我们删除 httpd 镜像:

$ docker rmi httpd(镜像名或镜像id)

列出镜像

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

Docker容器使用

获取镜像

如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:

$ docker pull ubuntu

启动容器

以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:

$ docker run -it ubuntu /bin/bash

参数说明:

  • -i: 交互式操作。

  • -t: 终端。

  • ubuntu: ubuntu 镜像。

  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

要退出终端,直接输入 exit:

root@ed09e4490c57:/# exit

停止一个容器

停止容器的命令如下:

$ docker stop <容器 ID>

docker restart 重启:

$ docker restart <容器 ID>

启动已停止运行的容器

查看所有的容器命令如下:

$ docker ps -a

使用 docker start 启动一个已停止的容器:

$ docker start b750bbbcfd88 

后台运行

在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d指定容器的运行模式。

$ docker run -itd --name ubuntu-test ubuntu /bin/bash

注:加了 -d参数默认不会进入容器,想要进入容器需要使用指令 docker exec(下面会介绍到)

进入容器

在使用 -d参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

  • docker attach:如果从这个容器退出,会导致容器的停止。

  • docker exec:推荐大家使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止。

attach 命令

$ docker attach <容器id>

注意:如果从这个容器退出,会导致容器的停止。

exec 命令

下面演示了使用 docker exec 命令。

docker exec -it <容器id> /bin/bash

导出和导入容器

可以理解成vmware虚拟机文件打包成的压缩包

导出容器

如果要导出本地某个容器,可以使用 docker export命令。

$ docker export 1e560fca3906 > ubuntu.tar

这样将导出容器快照到本地文件。

导入容器快照

可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:

$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

删除容器

下面的命令可以清理掉所有处于终止状态的容器。

$ docker container prune

类似与删除vmware中的虚拟机


# Docker
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 周煜暖 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
周煜暖 LV.2
异乡的白月光 是荒凉的歌 照我从来路来 走前路坎坷
  • 3 文章数
  • 2 关注者
【Web逆向】修改浏览器的C++代码,定制随机指纹
2025-01-02
从vmware到docker 02-vmware和docker的网络配置
2023-04-08
文章目录