Docker及个人云盘搭建学习笔记

前几天去朋友家,他给我演示了下云服务器的妙用,只见他轻轻敲出几行命令后

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
yum install docker
//安装docker,我的云服务器系统是CentOS 7.5 64位

docker pull nextcloud
//拉取nextcloud镜像

docker pull mysql:8.0
//拉取mysql:8.0镜像

systemctl start docker

systemctl enable docker
//设置docker开机自启动

docker run -d --name mysql -v document_mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=pw1 -e MYSQL_DATABASE=nextcloud -e MYSQL_USER=user -e MYSQL_PASSWORD=pw2 -p 3306:3306 mysql:8.0
//在名为mysql的容器中启动mysql:8.0,并配置mysql环境变量:;-d 在后台运行容器,并且打印容器id,--name为容器指定一个名称;-volume,-v 绑定一个卷,格式为-v 本地目录:容器目录 或 -v 容器目录;-e 设置环境变量;

docker run -d --name nextcloud -v nextcloud:/var/www/html --link mysql:mysql -p 8080:80 nextcloud
//在名为nextcloud的容器中启动nextcloud:--link 添加链接到另一个容器;-p 指定端口映射,格式为:主机(宿主)端口:容器端口

我空空如也的服务器上就装上了可以多用户登陆的”个人网盘“!

嘿嘿嘿

回家后想起他神乎其神的操作,内心久久不能平静,所以自己查询资料做了点小笔记:

快速搭建私有云盘参考链接:https://baiyue.one/archives/453.html

Docker

基于Go语言开发的开源项目

术语:

概念 说明
Docker 镜像(Images) Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。
Docker 容器(Container) 容器是独立运行的一个或一组应用,是镜像运行时的实体。
Docker 客户端(Client) Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。
Docker 主机(Host) 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker Registry Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
Docker Machine Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。
Volume(数据卷) 通过数据卷可以在容器之间实现共享和重用;
对数据卷的修改会立马生效(非常适合作为开发环境);
对数据卷的更新,不会影响镜像;
卷会一直存在,直到没有容器使用

和虚拟机的异同:

相同点:

虚拟机和Docker同是使用虚拟化技术,来达到在同一平台上配备多个运行环境的目的;

不同点:

  1. 虚拟机是通过软件模拟当前的硬件环境(硬件资源的虚拟化)来运行一个完整的操作系统,Docker自建的Docker容器(Container)是共用一个系统内核(内核级别的虚拟化);

VM vs Docker

  1. 虚拟机相对Docker非常笨重,因为承载了一个完整的操作系统导致占用硬件资源十分多,启动也很慢,而Docker中每个镜像文件大小十分轻便(MB级别大小),可以做到秒级启动

参考链接:https://www.runoob.com/docker/docker-architecture.html