Docker

Linux虛擬化容器技術,有效的由單個操作系統管理資源細化爲獨立的組中,更高效的平衡有衝突的資源間使用需求,docker2013年基於go實現的開源項目,進一步優化了容器使用的體驗。每個容器內運行應用,不同容器間相互隔離,容器間可以建立通信機制。通過管理應用組件的封裝、分發、部署、運行達到組件“一次封裝,到處運行”的目的。這裏的應用組件可以是一個web應用、mysql服務等,最常見的LAMP(linux+apache+mysql+php)一次部署,其他n臺新的服務器上啓動需要的容器即可。

Docker核心*鏡像容器倉庫

跟maven一樣,通過鏡像映射到(公有或私有)倉庫,找到對應的容器(包含各應用運行實例)。

每個倉庫寂靜中存放某一類鏡像(n各鏡像文件,通過不同tag區分版本),最大的公開倉庫:docker hub

用戶創建了自己的鏡像之後,就可以使用push命令將它上傳至倉庫,下次在另一臺機器使用該鏡像時,從倉庫pull下來就可以了。(管理同git)

Docker的安裝

mac直接通過brew cask install docker命令即可下載安裝完畢

鏡像

獲取鏡像

docker pull name[:tag] //不寫tag默認選擇latest標籤最新版本下載

docker pull ubuntu :15.10 下載15.10版本的ubuntu操作系統

docker pull registry.hub.docker.com/ubuntu:15.10 即從默認的註冊服務器registry.hub.docker.com中的ubuntu倉庫下載指定版本的ubuntu系統

也可以指定其他的註冊服務器

下載鏡像到本地後,可隨時使用,例如使用該鏡像創建一個容器,運行bash腳本

使用鏡像

docker run ubuntu:15.10 /bin/echo "Hello world"

查看鏡像信息

docker images

搜索鏡像

docker search mysql 搜索遠端倉庫中的共享mysql及鏡像

刪除鏡像

docker rmi imageId 通過id執行rmi時直接刪除相關tag及對應鏡像文件

docker rmi tagName 通過標籤名刪除時,只刪除指定tag標籤而不刪除鏡像文件,當只剩下鏡像時就是徹底刪除鏡像。

一般刪除鏡像前,要先刪除景象中存在的所有容器,通過docker ps -a 查看本基金上所有存在的容器;docker rm 容器ID 進行刪除

創建鏡像 三種方式:

基於已有鏡像:docker commit -a "author name" -m "comment" 容器id -p 提交時暫停容器運行

eg 啓動一個鏡像,並在其中創建一個test文件,然後提交該鏡像;創建成功後返回鏡像id

基於本地存在的模板

eg本地已存在ubuntu模板壓縮包,直接執行 cat ubuntu....tar.gz|docker import -ubuntu:15.10

基於Dockerfile創建

1.編寫Dockerfile文件

dockerfile由一行命令組成,一般涵蓋4部分信息:基礎鏡像信息、維護者信息、鏡像操作指令、容器啓動時指令

# This dockerfile uses the ubuntu image
        # VERSION 2 - EDITION 1
        # Author: docker_user
        # Command format: Instruction [arguments / command] ..
@@@
        # 第一行必須指定基於的基礎鏡像
        FROM ubuntu
@@@
        # 維護者信息
        MAINTAINER docker_user [email protected]
@@@
        # 鏡像的操作指令
        RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/
        apt/sources.list
RUN apt-get update && apt-get install -y nginx
        RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
@@@
        # 容器啓動時執行指令
        CMD /usr/sbin/nginx

2.docker build [option] 路徑 來創建鏡像

docker build -t max_repo/ max_image /tmp/docker_builder -t指定鏡像標籤信息爲max_repo;指定dockerfile所在路徑爲/tmp/docker_builder

讀取指定目錄下的dockerfile文件,並將文件內容發送給docker服務端,由服務端來創建鏡像。

導出鏡像到本地

docker save -o ubuntu_15.10.tar ubuntu:15.10

上傳鏡像

docker push name[:tag]

用戶在dockerhub逛網註冊後,即可上傳自制的鏡像。可以先添加新標籤,然後push上傳鏡像

爲本地及鏡像添加新標籤 docker tag tagname

容器

容器是鏡像的一個運行實例,不同的是容器帶有額外的一個或一組應用運行其中。

創建容器

docker create -it ubuntu:latest

docker start

另外可直接執行docker run ubuntu 可直接創建並啓動容器 eg docker run ubuntu:15.10 /bin/echo "Hello world"

交互式終端

docker run -t -i ubuntu:15.10 -t分配一個僞終端,-i容器輸入保持打開;可直接運行命令;ctrl+d或鍵入exit退出容器(退出則意味容器終止運行)

docker start/restart/stop containerName

刪除容器

docker rm -f -l -v 容器id(前3位即可) -f 強制刪除,運行中也刪除;-link 刪除容器連接,但保留容器;-v刪除容器掛在的數據卷

導入導出容器

docker export 即將已經創建的容器導出到一個文件

docker export containerID>test_run.tar

cat test2.tar |docker import - test/test:v1.0

倉庫

搭建私有倉庫

docker run -d -p 5000:5000 registry 自動下載並啓動一個registry容器,監聽端口5000,創建本地私有倉庫服務,默認在/tmp/registry下

push鏡像到指定倉庫

docker push ip:端口/imageName

 

除上三塊操作,還有對docker容器進行數據管理、網絡配置、容器間通信配置等相關操作。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章