Docker Command

Docker 指令說明

Neil 104/9/10 編輯

-p 指定docker對外port 
-d docker container程式在背景執行
-v 透過本機資料夾分享到docker Container內或是指定Container資料夾儲存到本機路徑
-t 選項讓Docker分配一個虛擬終端(pseudo-tty)並綁定到容器的標準輸入上
-i 則讓容器的標準輸入保持打開
-f 執行Container內部的檔案
--name 給定一個container名稱
--link 連接另一個container 
--dns 讓docker 使用指定的dns伺服器
--change 指定將CMD執行的程式換成你要執行的程式   
-f 強制刪除
--rm 在執行container完成或是設定完成後輸入exit跳出將會自動刪除建立container

範例:

docker run -it -p 9200:9200 本機Port:Container Port

docker run -it -v /root/data:/container/data 本機路徑:Container路徑

docker commit --change "CMD 指定要執行程式" contrain名稱 新的contrain名稱

Docker 使用vim指令

需要先將docker linux更新後才可以安裝vim套件

apt-get update
 apt-get install vim

Docker 常用功能指令

Docker hub官方說明

docker attach <container-id>  透過attach指令 重覆連入 container
docker commit copy一份Container完成的設定   
docker even  指定Container內部執行程式
docker images show出現有的images檔案
docker stop 停止現有的Container
docker inspect 查看Container所以的硬體設備資訊
docker pull 從docker Server Get下來一個images
docker push 上傳到docker Server 一個images檔
docker rmi 刪除一個docker images檔案
docker search 搜尋Docker Server上的檔案
docker run 執行一個新的Container
docker unpause 將一個Container所有的程式從暫停狀態中恢復為起動
docker import 匯入一個tar的images
docker export 匯出一個tar檔案
docker save 保存一個images檔案為tar  
docker tag 將images需要上傳到Docker hub更名成Docker hub線上名稱
docker load 使用save所建立出來的tar檔案,匯入到docker裡面
docker kill 刪除正在run container
docker loing 登入container
docker logout 登出container
docker logs 查看container執行logs
docker build 透過自已編寫的Dockerfile重新編輯一個images檔
docker -ps -a 現在有多少個在start或是stop的Container
docker --rm 刪除現有的Container

範例:

docker commit container的ID 新的Container名稱:TAG版本

docker save -o busybox.tar busybox 透過save將busybox container匯出成 busybos.tar檔案,匯入可以使用load

docker load --input fedora.tar 使用load將匯出的tar檔重新匯入到docker images內

範例:如何將container檔案儲存到本機端資料夾

Elasticsearch images為範例 檔案可以使用Docker hub

docker pull neiltw/elasticsearch-master-plugin-head-marvel

執行ES 同時開起 9200及9300 port,並將elasticsearch data檔案儲存在本機端。

docker run -d -p 9200:9200 -p 9300:9300 -v /root/docker/data/elasticsearch:/usr/share/elasticsearch/data --name  <images-name>  elasticsearch

利用docker exec直接在container指令安裝elasticsearch-head套件

docker exec <container-name> /usr/share/elasticsearch/bin/plugin -install mobz/elasticsearch-head

將本機logstash的config資料夾匯入到docker Container的config/資料夾內 -f為執行Container內部的config/資料夾

docker run --name logstash -it --rm -v /Users/Neil/docker/config:/config logstash logstash -f /config/logstash.conf

建立自已Docker-registry 私有雲

私有雲

Docker hub 教學

如果已經有images輸入這段是在私有雲先建立registry_data,myfirstimages名稱 上傳到私有雲

docker tag <images-name> localhost:5000/myfirstimage

上傳到私有雲的Docker registry

docker push localhost:5000/myfirstimage

將私有雲的registry檔案保存在本機,執行時請先輸入以下指令 docker-registry images路徑 /tmp/registry

docker run -d -p 5000:5000 -v /root/data:/tmp/registry registry

Docker 重新build新的image

使用Docker build重新建立一個設定完成的container,並重新命名images檔案

docker build -t elasticsearch:v2 .

-t 為Repository name elasticsearch:v2 | elasticsearch為Repository名稱 v2為tag . 為找尋本路徑是否有Dockerfile檔案

Docker 查看log

docker logs -f --tail=all <container-id> 

Docker 上傳到Docker hub

需要先在Docker hub 新增一個Repository名稱,在將現有要上傳的images檔案修改名字。

docker tag images名稱 Docker hub Repository帳號/名稱
docker push 修改完成的images名稱 例如 neiltw/ealsticsearch-head

Docker 利用-h與--net讓IP位址不變可重覆login原本container

-h是先將container:/etc/hosts給定名稱。

docker run -it -h cookbook ubuntu:14.04 bash
$ ifconfig    

eth0

Link encap:Ethernet HWaddr e2:4c:0a:6a:a6:ee
inet addr:172.17.0.4 Bcast:0.0.0.0 Mask:255.255.0.0

開起另一個boot2Docker終端機使用docker ps -a 查看現有的container名稱

CONTAINER ID IMAGE COMMAND ... NAME
cc7f72826c36 ubuntu:14.04 "bash" ... cocky_galileo

找到container名稱後輸入以下指令將會login原本的container內,IP位址不會變動

--net=container:不變,cocky_galileo將是你原來所建立的container名稱

docker run -ti --net=container:cocky_galileo ubuntu:14.04 bash

DockerUI Web網頁管理container狀態工具

Docker UI教學網站

每次查看Container是非常麻煩的是 DockerUI將可以解決每次使用指令來觀看

docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock dockerui/dockerui

DockerUI

Docker Rancher套件 待續