####Docker简介: Docker 是个进程级的轻量化虚拟机,从狭义上来讲就是一个进程,从广义上来讲是一个虚拟容器,或者叫应用容器( Application Container )
Docker 中有三个核心概念:Image、Container、Repository。
-
Image:和 Windows 的那种 ISO 镜像相比,Docker 中的镜像是分层的,可复用的,而非简单的一堆文件迭在一起(类似于一个压缩包的源码和一个 Git 仓库的区别)。
-
Container: 容器的存在离不开镜像的支持,他是镜像运行时的一个载体(类似于实例和类的关系)。依托 Docker 的虚拟化技术,给容器创建了独立的端口、进程、文件等“空间”,Container 就是一个与宿机隔离 “容器”。容器可宿主机之间可以进行 port、volumes、network 等的通信。
-
Repository: Docker 的仓库和 Git 的仓库比较相似,拥有仓库名、tag。在本地构建完镜像之后,即可通过仓库进行镜像的分发。常用的 Docker hub 有 https://hub.docker.com/ 、 cr.console.aliyun.com/ 等。
Docker相对于VM有以下几个优点:
启动速度快,容器启动本质就是一个开启一个进程而已,因此都是秒启,而 VM 通常要更久 资源利用率高,一台普通 PC 可以跑成百上千个容器,你跑十个 VM 试试。 性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源
总之Docker和传统的虚拟机有着非常大的区别,下面就来部署一台Docker研究研究
0:环境检查
安装之前,我们首先确保自己的 Linux 系统内核版本高于3.10,并且系统是64位,才能体验 Docker 。
通过 uname -ir 查看是否满足要求。
uname -ir
2:安装与配置Docker
安装方式有很多种,本文介绍的是YUM方式
yum install -y docker #yum 方式安装docker
vi /etc/sysconfig/docker
添加一行:OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'
[图片上传失败...(image-2f9aaf-1561810621184)]
systemctl restart docker #重启服务
测试:
>>docker pull hello-world
>>sudo docker run hello-world
出现“Hello From Docker”表示Docker正常运行
常用命令:
1.生命周期管理
docker [run|start|stop|restart|kill|rm|pause|unpause]
a.docker start/stop/restart id
b.docker run
2.常用操作运维
docker [ps|inspect|top|attach|events|logs|wait|export|port]
3.镜像仓库
docker [login|pull|push|search]
4.本地镜像管理
docker [images|rmi|tag|build|history|save|import]
5.其他命令
docker [info|version]
3:在Docker上部署OwnCloud
我们已经部署完成了Docker,现在来试试部署一个OwnCloud服务
3.1:拉取OwnCloud镜像
docker pull owncloud
拉取中///
拉取完成后输入:docker images
可以查看本机上有的镜像
3.2:部署容器
docker run -d -p 9090:80 owncloud
#-d 守护容器,就是后台运行,退出命令窗口容器也不会停止
#-p 宿主机端口和容器端口映射
#9090:80 宿主机端口:容器公开的端口
3.3:测试
在浏览器中输入 IP:9090
可以看到服务已成功运行
停止服务:
docker ps #查看运行中的dock进程
现在可以看到正在运行的镜像只有owncloud这一个
>>docker stop 19d009f7d305 #19d009f7d305为owncloud的container id
再次键入 docker ps 可以看到owncloud已经不在运行了 问题: nginx 映射 owncloud 不能上传大文件 总是中断
解决:
nginx 有限制大小的属性
client_max_body_size 1024m;
加入 http{} 中
http {
include mime.types;
default_type application/octet-stream;
client_max_body_size 1024m;
server {
listen 80;
server_name ******;
location / {
proxy_pass http://127.0.0.1:9090; ## 指定端口号 8000
}
}
}
问题:
您正在访问来自不信任域名的服务器。 Please contact your administrator. If you are an administrator of this instance, configure the "trusted_domains" setting in config/config.php. An example configuration is provided in config/config.sample.php or at the documentation.
解决:
owncloud
配置文件路径在docker容器下
vim /var/www/html/config/config.php
'trusted_domains' =>
array (
1 => '域名或者ip',
2 => '1.1.1.12'
)
nginx 添加 proxy_set_header Host $http_host;
location / {
proxy_pass http://127.0.0.1:8686; ## 指定端口号 8686
proxy_set_header Host $http_host;
}