體驗 Docker 之之前的工做日誌彙總

n# 2014/09/02 安裝 CentOS 7python

網絡配置

CentOS 7 安裝完成後,網絡不能夠。CentOS 7 網絡配置和 6 有些不一樣。CentOS 7 虛擬機安裝完成後有一個隨機的網卡,在我這叫 ens35。靜態 IP 沒有配置成功。簡單的啓用網絡的方式是使用默認的 DHCP 方式,只須要設置網卡配置文件 /etc/sysconfig/network-scripts/ifcfg-xxx 中的 ONBOOT=yes,默認是 no。 以後配置 DNS,和 6 中同樣。web

安裝 Docker

在 CentOS 7 中,安裝 Docker 很是簡單,只須要執行 sudo yum install docker 便可spring

運行 Docker

安裝完 Docker 以後,須要啓動 Docker 的服務 sudo service docker startdocker

設置開機自動啓動 sudo chkconfig docker oncentos

下載 CentOS 的鏡像 sudo docker pull centosbash

而後就能夠啓動 Docker 容器,在其中執行命令了 sudo docker run -i -t centos /bin/bash網絡

2014/09/03 體驗 Docker

對 Docker 資源隔離特性的瞭解

Docker 使用 Linux 的 cgroup 對資源進行隔離,對容器內的進程進行資源(CPU、內存、磁盤、網絡)限制,使用 namespace 對屬於同一個容器的進程分爲同一組。Docker 在這些 Linux 核心技術上面,對它們進行封裝,簡化它們的使用。app

用 Docker 啓動一個 web 應用

根據 Docker 官網提供的教程,經過 Docker 啓動一個 Web 應用非常簡單和快速 sudo docker run -d -P training/webapp python app.pywebapp

固然,第一次運行是須要先下載鏡像的。spring-boot

2014/09/04 準備演示 Docker

演示目標

  1. 用 Docker 在一個主機裏快速啓動多個應用實例
  2. 限制 Docker 的 CPU 和內存的使用
  3. Docker 之間相互通訊

限制 Docker 的 CPU 和內存的使用

在啓動一個 Docker 容器以後,咱們能夠查看這個容器的 IP 地址 sudo docker inspect -f '{{ .NetworkSettings.IPAddress }}' container_name

制定 -m 參數以後,top 沒法顯示被限制了的容器的內存大小

編寫示例程序

目標是編寫兩個示例程序,一個是 device,提供一個 REST 接口,傳入一個 device ID,返回帶有這個 ID 的設備名稱。另一個是 conference 模塊,調用 device 模塊。使用 Spring Boot 來實現。有段時間沒有用 Spring Boot 寫程序,有些生疏。記錄一下編寫這兩個簡單的不能再簡單的示例程序時遇到的坑

Gradle buildscript

當你的構建過程須要引入第三方的類庫時,須要在以下代碼

buildscript {
    ext {
        springBootVersion = '1.1.5.RELEASE'
    }

    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

打 Jar 包時的命令

gradle build 而不是 gradle jar

2014/09/09 Docker 初步演示

初步演示了用 Docker 容器封裝一個 Java Web 應用,並在一個 Host OS 上快速啓動多個容器的能力。進一步演示目標:

  1. 容器之間共享目錄
  2. 數據持久化
  3. 深刻了解 cgroups
  4. 內存資源限制:限制容器內存大小,再啓動大於此內存的 Java 進程

2014/09/15

容器間以及 Host 之間的目錄共享

這個特性的調研破費了一番周折,後來發現 CentOS 的 EPEL Repository 中的 Docker 的版本其實只有 0.11,而最新的則是 1.2.0。在換了新的 Binary 的最新的 Docker 以後,順利實現了容器之間以及和 Host 之間的目錄共享。

命令:docker run -i -t -v /host_dir:/container_dir centos /bin/bash

在實現容器和 Host 之間的目錄共享以後,數據的持久化也天然實現了。在容器中在共享目錄之上作的操做會天然而然的體如今 Host 中所對應的目錄之上。在容器被中止或銷燬以後,這個目錄上的文件仍是存在的。

2014/09/16

容器集羣的管理是一個問題,雖然 Polycom 產品集羣的規模不可能達到互聯公司的規模,可是考慮到雲時代的到來。爲客戶提供 SaaS 形式的會議服務是能夠預見到的。在這種狀況下,Docker 容器集羣管理是須要考慮的一個技術。在這方面,已有的技術包括 Google 開源的 Kubernetes、Apache 的 Mesos 等。

相關文章
相關標籤/搜索