1. 程式人生 > >docker~linux下的部署和基本命令

docker~linux下的部署和基本命令

回到目錄

docker是最近比較流行的容器工具,它可以幫助我們快速部署應用,尤其是在“微服務”環境下,成百個服務要去啟動,停止,部署一次太麻煩,而如果把它部署到docker裡,下一次應用就方便多了,如果需要幾行程式碼就搞定了!

百度百科定義

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。

映象和容器

映象:就是我們windows裡的ISO檔案,就是一個打包好的東西,也類似於GHOST這種工具包

容器:將映象啟動後,它會生產一個容器,我們可以在容器裡新增新的元件,然後生產新的映象!

應用場景 

環境管理複雜
從各種OS到各種中介軟體到各種app, 一款產品能夠成功作為開發者需要關心的東西太多,且難於管理,這個問題幾乎在所有現代IT相關行業都需要面對。
雲端計算時代的到來
AWS的成功, 引導開發者將應用轉移到 cloud 上, 解決了硬體管理的問題,然而中介軟體相關的問題依然存在 (所以openstack HEAT和 AWS cloudformation 都著力解決這個問題)。開發者思路變化提供了可能性。
虛擬化手段的變化
cloud 時代採用標配硬體來降低成本,採用虛擬化手段來滿足使用者按需使用的需求以及保證可用性和隔離性。然而無論是KVM還是Xen在 docker 看來,都在浪費資源,因為使用者需要的是高效執行環境而非OS, GuestOS既浪費資源又難於管理, 更加輕量級的LXC更加靈活和快速
LXC的移動性


LXC在 linux 2.6 的 kernel 裡就已經存在了,但是其設計之初並非為雲端計算考慮的,缺少標準化的描述手段和容器的可遷移性,決定其構建出的環境難於遷移和標準化管理(相對於KVM之類image和snapshot的概念)。docker 就在這個問題上做出實質性的革新。這是docker最獨特的地方。

在centos上的部署

一 安裝並新增服務和自啟動項

[[email protected] ~]# yum install docker

[[email protected] ~]# systemctl start docker.service

[[email protected]

~]# systemctl enable docker.service

二 docker幾個常用的命令

docker ps

令檢視容器

docker info

檢查Docker的安裝是否正確,如果沒有找到此命令,則表示Docker沒有正確安裝

docker pull busybox

拉取一個預建的映象

sample_job=$(docker run -d busybox /bin/sh -c "while true; do echo Docker; sleep 1; done")

以後臺程序的方式執行hello docker
sample_job命令會隔一秒列印一次Docker,使用Docker logs可以檢視輸出。如果沒有起名字,那這個job會被分配一個id,以後使用命令例如Docker logs檢視日誌會變得比較麻煩。

docker help

所有Docker命令

docker logs $sample_job

執行Docker logs命令來檢視job的當前狀態:

docker stop $sample_job

停止名為sample_job的容器

docker restart $sample_job

重新啟動該容器

docker stop $sample_job docker rm $sample_job

如果要完全移除容器,需要將該容器停止,然後才能移除

docker commit $sample_job job1

將容器的狀態儲存為映象

docker images

令檢視所有映象的列表

安裝.netCore的映象

從倉庫中拉取一個映象

#下載dotnet的映象
sudo docker pull microsoft/dotnet

檢視一下這個映象

sudo docker images

這個過程可以是空的,因為上面的下載速度很慢,畢竟是大老美的伺服器,呵呵!

通過映象,執行一個容器

 docker run -it --name mycoreContainer 2cef2b382ef0

在這個容器中進行操作

[email protected]:~/hello# 

退出當前的容器

[email protected]:/# exit

檢視剛才建立的容器

docker ps -a

從容器建立一個新的映象

 docker commit -a "lind.zhang" -m "netcore a  image" 3b063cca6a8a netcore:v1 

引數說明

  • -a :提交的映象作者;

  • -c :使用Dockerfile指令來建立映象;

  • -m :提交時的說明文字;

  • -p :在commit時,將容器暫停。

刪除所有未執行 Docker 容器

docker rm $(docker ps -a -q)

刪除所有未打 tag 的映象

docker rmi $(docker images -q | awk '/^<none>/ { print $3 }')

刪除所有映象

docker rmi $(docker images -q)

根據格式刪除所有映象

docker rm $(docker ps -qf status=exited)

下講我們將學習如何去部署一個netcore網站在docker裡!

 回到目錄