docker
docker 介绍
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
docker 安装
基于 centos7 服务器
- 卸载旧版本
1 | yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine |
- 安装必要的工具
1 | yum install -y yum-utils device-mapper-persistent-data lvm2 |
- 安装软件源
1 | yum-config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
- 更新 yum 缓存,安装 docker
1 | yum makecache |
- 开机自启动并启动 docker
1 | systemctl enable docker |
- 加速 docker 镜像
新增文件vim /etc/docker/daemon.json
文件内容
1 | { |
插一句
阿里云的镜像加速地址,需要先注册阿里云之后才能看到,注册之后访问https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors就可以看到了
daemon.json
文件创建完了重启下 docker
1 | systemctl restart docker |
docker 基本概念
镜像
Docker
镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
容器
镜像(Image
)和容器(Container
)的关系,就像是面向对象程序设计中的 类
和 实例
一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root
文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。
仓库
仓库的概念跟 git 类似,存放镜像的地方,点击这里访问官方地址
docker 基本命令
1 | # 启动容器,后面跟参数容器名或者容器ID |
下面开始实战,部署 nextcloud
nextcloud
nextcloud 介绍
NextCloud 是一款开源网络硬盘系统,最新版本是 12,NextCloud 源代码完全开放,你可以在开源许可协议的约束下免费使用,并且同时支持android
和ios
系统
docker 部署 nextcloud
- 创建 mysql 容器
1 | # 创建容器 |
参数详解
run
命令
–name 指定容器名称是 nextcloud_db
-e 设置环境变量,这里设置了数据库的 root 密码
-d 指定容器后台运行
mysql:5 指定镜像是 mysql,并且是 5.x 的版本
exec
命令
-i -t
参数docker exec
后边可以跟多个参数,这里主要说明 -i -t 参数。
只用 -i
参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。
当 -i -t
参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符,并且从这个 stdin 中 exit
,不会导致容器的停止。
- 创建 nextcloud 容器
1 | docker run --name=nextcloud --link nextcloud_db:db -v /data:/var/www/html/data -p 1080:80 -d nextcloud |
参数详解
–name 指定容器名称是 nextcloud
–link nextcloud_db:db 将上面创建的名为nextcloud
的容器映射名为db
的服务提供给nextcloud
容器使用
-v /data:/var/www/html/data 将本地的/data
目录挂载到容器的/var/www/html/data
目录
打开浏览器访问http://你的服务器IP:1080
接可以看见 NextCloud 的界面了,然后参照提示完成设置即可
这里,数据库选择是 mysql, 数据库名 nextcloud
,用户名 nextcloud
,密码 123456
,数据库地址是 db
(就是上面 nextcloud_db
容器的映射服务名称)
后记
所有容器对应的目录位于/var/lib/docker/containers
目录下,文件名是容器的 ID
上面的--link
操作,会在对应容器的 hosts 文件里面加 IP 与主机名的映射
1 | 172.17.0.2 db 0ee227b81599 nextcloud_db |
至此,部署完毕。
参考链接