Docker Hub 上有大量的高質量的鏡像能夠用,這裏咱們就說一下怎麼獲取這些鏡像。
從 Docker 鏡像倉庫獲取鏡像的命令是 docker pull。其命令格式爲:html
docker pull [選項] [Docker Registry 地址[:端口號]/]倉庫名[:標籤]
docker
中拉取指定版本的鏡像好比:linux
docker pull mongo:3.2.4 dockre pull redis:3.2
具體的選項能夠經過 docker pull --helpnginx
要想列出已經下載下來的鏡像,可使用docker image ls
或docker images
命令。web
若是要刪除本地的鏡像,可使用 docker image rm 命令,其格式爲:redis
$ docker image rm [選項] <鏡像1> [<鏡像2> ...]
/bin/bash
是linux
的命令行工具,相似於window
的cmd
進入dos
系統。docker
docker ps #查看啓動的容器 docker ps -a #查看全部容器,包含沒有啓動的容器
啓動容器有兩種方式,一種是基於鏡像新建一個容器並啓動,另一個是將在終止狀態(stopped
)的容器從新啓動。
由於 Docker 的容器實在過輕量級了,不少時候用戶都是隨時刪除和新建立容器。 編程
語法:ubuntu
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
COMMAND
: 容器啓動後進入容器中要執行的命令.segmentfault
OPTIONS:
(經常使用選項)centos
-d: 讓 Docker 在後臺運行而不是直接把執行命令的結果輸出在當前宿主機下 -t: 選項讓Docker分配一個僞終端(pseudo-tty)並綁定到容器的標準輸入上, -i: 則讓容器的標準輸入保持打開。 -name:爲容器命名 -v: 建立數據卷 -p: 綁定端口
docker run
docker run命令有兩個參數,一個是鏡像名,一個是要在鏡像中運行的命令。
例如:
docker run -p 5000:5000 –name web training/webapp
更多的時候,須要讓 Docker 在後臺運行而不是直接把執行命令的結果輸出在當前宿主機下。此時,能夠經過添加 -d
參數來實現。
$ docker run -d CONTAINER [CONTAINER...]
例如:
docker run –d –p 5000:5000 training/webapp
啓動一個 bash 終端,容許用戶進行交互。
$ docker run -it CONTAINER [CONTAINER...] /bin/bash
-t
:選項讓Docker分配一個僞終端(pseudo-tty)並綁定到容器的標準輸入上, -i
: 則讓容器的標準輸入保持打開。
在交互模式下,用戶能夠經過所建立的終端來輸入linux
命令
例如:建立centos容器而且進入centos容器中
docker run -it centos /bin/bash
$ docker stop CONTAINER [CONTAINER...]
例如:
docker run –d –p 5000:5000 training/webapp
$ docker start CONTAINER [CONTAINER...]
例如:
docker stop web
$ docker restart CONTAINER [CONTAINER...]
例如:
docker restart web
$ docker rm CONTAINER [CONTAINER...]
例如:
docker rm web
$ docker logs CONTAINER [CONTAINER...]
例如:
docker logs web
docker exec
:在運行的容器中
執行命令
語法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS說明:
-d :分離模式: 在後臺運行-i :即便沒有附加也保持STDIN 打開
-t :分配一個僞終端
$ docker exec –it CONTAINER /bin/bash
例如:
docker exec –it web
docker cp ed0f8bb24f3e:/opt/webapp/app.py d:/www
ed0f8bb24f3e: 容器id
/opt/webapp/app.py: 容器中的文件
d:/www: 主機文件夾
docker cp d:/www/文件 ed0f8bb24f3e:/opt/webapp/
tag的做用主要有兩點:一是爲鏡像起一個容易理解的名字,二是能夠經過docker tag來從新指定鏡像的倉庫,這樣在push時自動提交到倉庫。
將同一IMAGE_ID的全部tag,合併爲一個新的
# docker tag 195eb90b5349 seanlook/ubuntu:rm_test
新建一個tag,保留舊的那條記錄
# docker tag Registry/Repos:Tag New_Registry/New_Repos:New_Tag
數據卷 是一個可供一個或多個容器使用的特殊目錄,能夠繞過聯合文件系統(UFS),爲一個或多個容器提供訪問。數據卷設計的目的在於對數據的持久化
,它徹底獨立於容器的生命週期,所以Docker不會在刪除容器時刪除其掛載的數據卷,也不會存在相似垃圾收集的機制。
數據卷提供不少有用的特性:
注意:數據卷的使用,相似於Linux下對目錄或文件進行mount,鏡像中的被指定爲掛載點的目錄中的文件會隱藏掉,能顯示看的是掛載的數據卷。
將本地主機中的代碼運行在docker
容器中。
受權本地磁盤
運行一個nginx容器 ,-v 掛起一個卷,nginx用來訪問網頁的地址 , -d 以守護進程來運行,--name 給一個名字
docker run -d --name nginx -v /usr/share/nginx/html/ nginx
檢查容器的運行狀態
docker inspect nginx
對index.html文件作一些改動
echo "hello docker" > index.html
docker run -p 8090:80 -d -v $PWD/html:/usr/share/nginx/html nginx docker run -d -v d:/www/webapp:/opt/webapp training/webapp
# -v 表示的是volume(數據卷) --name 名字 nginx 是這個容器的基礎鏡像 docker create -v $PWD/data:/usr/share/nginx/html --name data_container nginx
運行一個新的容器,把上面提供數據的容器當作數據卷掛載到當前的容器中運行,-it表示交互的方式運行,會直接進入到這個容器中
docker run -it --volumes-from data_container nginx /bin/bash root@772cbe131d01:/usr/share/nginx/html# echo "Hello Nginx&Docker" > index.html
退出容器查看data目錄:
是的,你能夠將Docker理解爲一個輕量化的虛擬機,至於咱們常常說的什麼Tomcat鏡像、MySQL鏡像之類的,只是這個輕量化的虛擬機中安裝了相應的軟件。鏡像的名字也就說明了鏡像的功能。
是的,構建Docker鏡像、運行Docker容器,都須要安裝Docker,但這是一勞永逸的,由於咱們使用的是安裝了各類各樣功能軟件的Docker鏡像和Docker容器。