docker入門安裝與簡單使用
快速瞭解
(一) Docker 是什麼
官方給出的定義是:Docker是一個集開發,打包,執行應用於一體的開放式平臺。Docker可以用來快速交付應用。使用Docker,你可以將應用程式從你的基礎設施中分離出來,並將基礎設施當做一個管理平臺。Docker可以加快打包時間,加快測試,加快釋出,縮短開發及執行程式碼之間的週期。Docker通過結合核心容器化特點和工作流,並使之工具化來實現這一切,幫助管理和釋出你的應用。
(二) Docker平臺
Docker的生態環境正逐漸壯大起來,Docker的核心,提供了一種執行大部分應用程式的方式,並安全地隔離在容器中。隔離性和安全性允許你在主機上同時執行多個容器。容器天生的輕量級特性,使其在執行時無需載入額外的虛擬機器管理器,這意味著你可以從硬體中獲得更多東西。
容器周邊是一個工具化的平臺,可以從以下幾個方面幫助你:
將你的應用(或支援的元件)置於Docker容器中
分發和打包這些容器,以便將來用於開發和測試
將這些應用部署至生產環境,無論是資料中心還是公有云環境。
(三) Docker 引擎
Docker Engine是一個C/S架構的應用程式,主要有以下元件:
服務端守護程序
REST API介面,程式用來與守護程序進行互動
CLI(command line interface)命令列介面客戶端
Docker Engine Components
注:Docker 引擎 組成(圖片來源於docs.docker.com)
CLI使用指令碼或直接使用CLI命令,利用Docker的REST API來控制Docker守護程序或與之進行互動。其他許多Docker應用程式使用底層API和CLI。
守護程序建立並管理Docker物件,Docker物件包括映象,容器,網路,資料卷等等。
(四) Docker可以幹什麼
快速交付應用
便捷的部署和調整
高密集度,高負載
(五) Docker 重要概念
映象(images)
Docker映象是一個只讀的模板。包含了容器執行時所需要的檔案系統和一些引數。映象是無狀態的,也不會改變。映象是用來建立容器的。你可以使用docker pull命令獲取一個別人已建立好的映象,或者使用dockerbuild來構建一個自己的映象。
容器(containers)
Docker容器就像是一個資料夾,容器中包含了應用執行所需的一切。每個容器都是一個隔離的和安全的應用平臺。容器是映象的一個例項,它是有狀態的,而且隨時會改變,容器一般是短暫的。
啟動一個容器的過程如下:
檢查指定的映象是否存在
如果不存在,則去Docker Hub下載
載入映象並執行
Docker註冊中心(Docker Registries):
Docker註冊中心是託管Docker映象的地方,有公共的和私有的,你可以往這些註冊中心上傳或下載映象。
Docker Hub是Docker官方的公共映象倉庫,這裡彙集了非常多的常用映象,我們可以直接從這裡下載使用,也可以自己製作自己的映象,並分享給別人。
docker ubuntu14.04安裝
編者按:docker的發展非常迅速,apt源的更新往往比較滯後。所以docker官網推薦的安裝方式都是下載docker安裝指令碼安裝。
依賴關係:
Ubuntu 14.04版本無需安裝額外的依賴包,可以直接安裝。
安裝步驟:
使用管理員帳號登入ubuntu 14.04系統,保證該管理有root許可權,或者可以執行sudo命令。
檢查curl包有沒有安裝。
$ which curl
如果curl沒有安裝的話,更新apt源之後,安裝curl包。
$ sudo apt-get update $ sudo apt-get install curl
獲得最新的docker安裝包。
$ curl -sSL https://get.docker.com/ | sh
shell會提示你輸入sudo的密碼,然後開始執行安裝過程。
確認Docker是否安裝成功。
$ sudo docker run hello-world
這個命令會下載一個測試用的映象並啟動一個容器執行它。
這時候本底沒有映象
docker會去Docker註冊中心下載
再 執行 docker run hello-world 執行映象
注意:docker要呼叫底層庫需要 sudo許可權 可以執行 sudo -i後 就切換到root了
docker run hello-world
接著簡單描述了一下產生該條資訊所經歷的一系列步驟:
1 Docker客戶端連線到守護程序
2 Docker守護程序從Docker Hub拉取了hello-world映象
3 Docker守護程序從該映象建立了一個容器,來執行了命令並輸出了我們當前看的這條訊息
4 Docker守護程序將容器中的標準輸出轉發到你的終端。
另一種校驗方式
sudo service docker status
執行結果:
$ sudo service docker status
docker start/running, process 10692
國情需要
1、配置Daocloud,去官網申請一個賬戶
2、配置 Docker 加速器 將 –registry-mirror 加入到你的 Docker 配置檔案 /etc/default/docker 中
3、重啟docker sudo service docker restart
docker簡單幾個命令
啟動docker服務
$ sudo service docker start
或者
$ sudo systemctl start docker
設定開機啟動
$ sudo systemctl enable docker
新增一個docker組(避免每次執行docker命令都帶sudo)
注:1.12版本的docker 安裝完後已經建立好了docker分組,檢查是否已存在:cat /etc/group |grep docker,如果你的沒有,則手動新增一下:
$ sudo groupadd docker
將當前使用者加入docker組
$ sudo usermod -aG docker $USER
編輯/etc/default/grub,修改GRUB_CMDLINE_LINUX的值如下:
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
儲存並退出。重啟系統
檢查版本
$ docker -v
Docker version 1.12.0, build 8eab29e
升級
後續如果有新的版本更新,直接使用apt-get即可:
$ sudo apt-get upgrade docker-engine
解除安裝
在解除安裝或刪除Docker資料時,一定要檢查確保需要的資料已做好備份!
解除安裝Docker:
$ sudo apt-get purge docker-engine
$ sudo apt-get autoremove --purge docker-engine
上述命令只是解除安裝了docker程式,並不會刪除資料(映象,容器,資料卷或你在主機上的配置檔案等),如果要將這些也全部刪除,執行:
$ sudo rm -rf /var/lib/docker
然後手動刪除你建立的配置檔案即可。
注:
如果你有建立docker組,並且該組也不再需要,則可以將該組刪除:
$ sudo groupdel docker
可以看一下目前所有的容器:
docker ps -a
檢視正在執行的容器:
docker ps
檢視最後建立的一個容器。
docker ps -l
檢視本地映象
docker images
線上查詢映象
如果你不知道都有哪些可用的映象,線上查詢一下
直接使用docker search + [你想查詢的映象關鍵字],如:
$ docker search tomcat
檢視 tomcat的映象
拉取映象
使用docker pull [映象名稱[:版本]]可以拉取一個映象:
注: 完整的映象名稱由[repository]/name:[tag]構成,[repository]為倉庫,如果省略,則預設為library,即從Docker Hub拉取;如果省略tag,則預設拉取latest版本,name為映象名稱,不能省略。
pull tomcat:7
建立容器
docker run -d --name tomcat001 -p 8081:8080 tomcat:8
其中,-d 指定容器在後臺執行;–name用於指定容器的名稱;-p 8081:8080 用於將容器內的8080埠對映到主機的8081埠,你也可以換成其他本機埠.如果需要,你可以建立多個容器使用,需要注意的是,本機對映的埠不能重複,name也不能重複。
容器日誌
docker logs -f tomcat001
停止容器
docker stop tomcat001
啟動容器
docker start tomcat001
docker run 該命令包括了 docker create 和 docker start
刪除容器
刪除一個容器前,需要先停止容器,否則,需要使用 -f選項強制刪除(不推薦)。
另外,如果容器包含資料卷的話,可以使用-v選項連同關聯的資料卷一塊刪除,刪除容器時,預設不刪除資料卷,因為資料卷通常會包含我們的資料。
docker rm tomcat001
刪除映象
docker rmi tomcat:8
//刪除一個映象前,需要先停止使所有用它的容器,否則會報錯,或者使用 -f選項強制刪除。
簡單實踐-跑一個tomcat
1、拉取tomcat的映象
docker pull tomcat:8
2、檢視一下映象是否拉取成功
docker images
3、建立並且啟動容器
docker run -d --name t8 -p 8081:8080 tomcat:8
//最簡單的使用資料卷的方式就是在建立一個容器時 增加-v選項
4、檢視容器日誌
docker logs t8
5、瀏覽器訪問tomcat8
http://宿主機ip:對映埠/
6、關閉容器
docker stop t8
7、啟動容器
docker start t8
8、檢視啟動了的容器
docker ps
9、建立目錄
//建立目錄
sudo mkdir -p /opt/data/myapp/ROOT
sudo chown -R $USER:root /opt/data/myapp // $USER 當前登入使用者名稱
//在/opt/data/myapp/ROOT下建立一個WEB-INF目錄
mkdir /opt/data/myapp/ROOT/WEB-INF
10、新建一個web.xml
//新建一個web.xml
vi /opt/data/myapp/ROOT/WEB-INF/web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
</web-app>
11、新建一個jsp頁面
新建一個jsp頁面
vi /opt/data/myapp/ROOT/index.jsp
<!DOCTYPE html>
<html lang="en">
</body>
Hello, this is my first docker app!
</body>
</html>
12、將我們的應用掛載到容器中
docker run -d --name myapp -v /opt/data/myapp:/usr/local/tomcat/webapps -p 8888:8080 tomcat:8
13瀏覽器訪問 http://宿主機ip:8888/
打造自己的開發環境映象
1 、新建一個資料夾,並命名為baseos
mkdir -p /opt/data/baseos
該目錄作為我們構建映象的上下文,構建該映象的所有內容都會放到該目錄下。
2、建立Dockerfile檔案
touch Dockerfile //該命令會建立一個空白文字文件
3、編輯Dockerfile
vim Dockerfile
寫入
# Base os image
FROM ubuntu:16.04
MAINTAINER your_name <your_email_address>
LABEL Description="This image is the base os images." Version="1.0"
# reconfig timezone
RUN echo "Asia/Beijing" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata
說明
以#開頭的行為註釋;
第二行FROM關鍵字告訴docker我們的新映象基於哪個基礎映象;
第三行MAINTAINER關鍵字是維護者資訊,可以修改為你的名字和郵箱地址;
第四行LABEL Description是對映象的一個簡單說明,Version指明該映象的版本號,方便維護;
第六行RUN關鍵字用於執行一條命令。這裡主要是修改系統的時區從標準UTC改為亞洲/Beijing。
4、下載jdk–》移動到Dockerfile所在目錄
5、修改Dockerfile檔案
# Base os image
FROM ubuntu:16.04
MAINTAINER your_name <your_email_address>
LABEL Description="This image is the base os images." Version="1.0"
# reconfig timezone
RUN echo "Asia/Beijing" > /etc/timezone && dpkg-reconfigure -f noninteractive tzdata
ADD jdk-7u80-linux-x64.tar.gz /usr/lib/jvm
RUN update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_80/bin/java 300 && update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_80/bin/javac 300
ENV JAVA_HOME /usr/lib/jvm/jre
6構建映象、執行docker build -t cjn/baseos:1.0 .命令構建,注意不要忘了最後的那個點.
說明: -t, –tag=”” Repository name (and optionally a tag) to be applied to the resulting image in case of success
7、測試結果