CentOS7 部署Docker&搭建OwnCloud

534 阅读3分钟

全文参考

####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;
        }