HOME | Vmware | docker基本指令

docker基本指令

2017/07/26/16:22 , Post in Vmware , 評論(0) , 引用(0) , 閱讀(800) , Via 本站原創
docker 是一種輕量級的虛擬機器,優點是輕量,啟動服務極快,比起其他虛擬機器

除了所執行的應用程式以外幾乎不消耗其他的系統資源,打包容易,所以更容易佈署或移轉

首先是安裝docker

===============================================

Centos 6

先用EPEL套件安裝

wget http://mirrors.yun-idc.com/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

yum install docker-io

===============================================

Centos 7

yum install docker-io

service docker start

chkconfig docker on

這樣開機後docker就會自動啟動了

=============下載image=======================

要找相關的images檔一種是到官方找https://hub.docker.com

一種是直接搜尋docker search ubuntu

INDEX       NAME                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATEDdocker.io  
docker.io/ubuntu                     Ubuntu is a Debian-based Linux operating s...   6321      [OK]

這表示有一個docker.io/ubuntu的images,至於他的版本呢可能只能到https://hub.docker.com上面看了,如果有找到指令我會再補上

接著我們要把images拉下來

docker pull docker.io/ubuntu:14.04

14.04表示你要拉的版本,如果不加就是latest,就是最後的版本

PS.注意最後的版本不代表最穩定的版本

=============執行image讓他變成容器================

先介紹幾個指令

docker images  #查詢本地有什麼images

docker ps         #查詢本機已經執行了那些容器

#docker images

REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
docker.io/nguoianphu/docker-dns   9.10.5              4397a4f50afc        44 minutes ago      1.017 GB
sameersbn/bind                    v2                  1de82241fca3        5 hours ago         438.7 MB
表示有兩個images,我要將images run起來變成容器

docker run -d -p 53:53/udp  docker.io/nguoianphu/docker-dns

參數-d 表示背景執行,53:53/udp表示到本機的udp 53轉到這個容器的udp 53 port上

如果成功執行起來可以用docker ps檢查

#docker ps
CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS              PORTS                        NAMES
13be5fa06309        docker.io/nguoianphu/docker-dns:9.10.5   "/docker-entrypoint.s"   46 minutes ago      Up 46 minutes       53/tcp, 0.0.0.0:53->53/udp   grave_kowalevski

記住13be5fa06309這個就是這個容器的ID,當你要停止、儲存現在狀態,都需要這個ID

=============進入容器=========================

docker exec -it 13be5fa06309 bash

其實exec是執行這個容器的命令,因為我要進入這個容器

所以用bash這樣就可以看到一個很小型的安裝好bind的linux主機

你可以vi編輯設定檔,可以用rndc reload重新讀取設定

但是千萬不要關閉服務,一但關閉服務整個docker就會停掉了~_~

另外進入容器後如果出現亂碼,可以在可以設定編碼(ex utf-8

docker exec -it 13be5fa06309 env LANG=C.UTF-8 bash

=============儲存image=========================

當我變更了設定檔,或是編輯了網頁內容之後,請記得關閉docker前要先儲存(不是save,是commit)

docker commit -m '註解/版本x之類的' -a '上傳者' 13be5fa06309 docker.io/nguoianphu/docker-dns

這樣docker images就會多出一個不一樣版本的images

=============匯出=========================

docker save -o bind_9.10.5.tar docker.io/nguoianphu/docker-dns:9.10.5

匯出的檔案,然後images名字:版本

這樣就會匯出成一個tar檔,可以拿到其他有docker的電腦上進行佈署

=============佈署image=========================

docker load --input bind_9.10.5.tar

=============其他==========================

假如你的容器網路不想要經過host層,在run的時候可以使用--net=host這個參數

但是根據我看到的資料,由於這個容器直接使用實體的網路,因此如果這個docker被入侵

是有機會直接反過來入侵你的host OS的

刪除容器

docker rm 容器id

刪除image

docker rmi image

還有一些容器run起來之後再docker ps是看不到的(WHY????)

例如docker run -t -i centos:centos6 bash

你可以進入centos6的bash,但是一但離開這個容器就結束了

因為你已經結束bash,像這種情況就需要讓他執行一個不會停的程式

docker run -d centos ping localhost

或是docker run -d --privileged=true centos /usr/sbin/init

使用特權模式執行

或是docker run -d -restart=always centos

再進入這個容器

docker exec -it id bash

發表評論

暱稱

網址

電郵

開啟HTML 開啟UBB 開啟表情 隱藏 記住我 [登入] [註冊]