2015年11月17日 00:54:02 閱讀數:16520 標籤: Docker 更多html
我的分類: Dockerdocker
製做本身的Docker鏡像主要有以下兩種方式:ubuntu
使用 docker commit 來擴展一個鏡像比較簡單,可是不方便在一個團隊中分享。咱們可使用 docker build 來建立一個新的鏡像。爲此,首先須要建立一個 Dockerfile,包含一些如何建立鏡像的指令。bash
1.新建一個目錄和一個 Dockerfile網絡
$ mkdir new_folder $ cd new_folder $ touch Dockerfile
2.編寫Dockerfile,Dockerfile中每一條指令都建立鏡像的一層,例如:ssh
# 這裏是註釋 # 設置繼承自哪一個鏡像 FROM ubuntu:14.04 # 下面是一些建立者的基本信息 MAINTAINER birdben (191654006@163.com) # 在終端須要執行的命令 RUN apt-get install -y openssh-server RUN mkdir -p /var/run/sshd
3.編寫完成 Dockerfile 後可使用 docker build 來生成鏡像。ui
$ sudo docker build -t="birdben/ubuntu:v1" . # 下面是一堆構建日誌信息 ############ 我是日誌 ############ # 參數: # -t 標記來添加 tag,指定新的鏡像的用戶和鏡像名稱信息。 # 「.」 是 Dockerfile 所在的路徑(當前目錄),也能夠替換爲一個具體的 Dockerfile 的路徑。 # 以交互方式運行docker $ docker run -it birdben/ubuntu:v1 /bin/bash # 運行docker時指定配置 $ sudo docker run -d -p 10.211.55.4:9999:22 ubuntu:tools '/usr/sbin/sshd' -D # 參數: # -i:表示以「交互模式」運行容器,-i 則讓容器的標準輸入保持打開 # -t:表示容器啓動後會進入其命令行,-t 選項讓Docker分配一個僞終端(pseudo-tty)並綁定到容器的標準輸入上 # -v:表示須要將本地哪一個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>,-v 標記來建立一個數據卷並掛載到容器裏。在一次 run 中屢次使用能夠掛載多個數據卷。 # -p:指定對外80端口 # 不必定要使用「鏡像 ID」,也可使用「倉庫名:標籤名」
Docker的網絡功能相對簡單,沒有過多複雜的配置,Docker默認使用birdge橋接方式與容器通訊,啓動Docker後,宿主機上會產生docker0這樣一個虛擬網絡接口, docker0不是一個普通的網絡接口, 它是一個虛擬的以太網橋,能夠爲綁定到docker0上面的網絡接口自動轉發數據包,這樣可使容器與宿主機之間相互通訊。每次Docker建立一個容器,會產生一對虛擬接口,在宿主機上執行ifconfig,會發現多了一個相似veth****這樣的網絡接口,它會綁定到docker0上,因爲全部容器都綁定到docker0上,容器之間也就能夠通訊。spa
在宿主機上執行ifconfig,會看到docker0這個網絡接口, 啓動一個container,再次執行ifconfig, 會有一個相似veth****的interface,每一個container的缺省路由是宿主機上docker0的ip,在container中執行netstat -r能夠看到以下圖所示內容:
container路由.net
在容器中使用netstat -r命令查看容器的IP地址命令行
容器中的默認網關跟docker0的地址是同樣的:
在宿主機中使用ifconfig查看docker0的IP地址
docker0
當容器退出以後,veth*虛擬接口也會被銷燬。