docker run hello-world # 分析上面指令結構: # docker: 告訴操做系統,正在使用docker程序 # run: 子指令,建立並運行容器 # hello-world: 告訴docker哪一個image被導入容器
打印以下:
完美,你的電腦上已經成功安裝docker了。如今咱們開始瞭解第一個概念:容器。按照下面的操做來,先有個感官的認識,稍後會詳細解釋容器。java
從上面的指令能夠知道,咱們的docker已經安裝成功了。咱們能夠用下面的命令查看本身正在運行的容器:程序員
docker ps //顯示全部正在運行的容器
固然,也可能顯示沒有正在運行的容器(剛開始安裝,尚未運行任何容器)。咱們給它加個參數就能查看全部容器,包括沒有運行的、正在運行的和運行過的。以下:docker
docker ps -a
結果圖:
這樣就能夠看到全部的容器,你必定能找到 hello-world這個運行過的容器。ubuntu
鏡像,就是一個文件系統,查看本身local的鏡像命令:vim
docker images //顯示的是本地鏡像
鏡像保存到本地的好處:當加載image的時候,會直接在本地加載,不用去遠程下載。節省時間,節省寬帶。查找鏡像地址: https://store.docker.com/comm...服務器
鏡像和容器的區別:容器只是鏡像的一個實例,鏡像被加載只是建立了一個實例。咱們經過上面指令查看鏡像,顯示的可能比容器(docker ps -a) 要多。由於還有一些鏡像只是下載在本地,卻沒有被加載,比如maven有個本地倉庫。maven
docker rm [id/name] #刪除全部 docker rm `docker ps -a -q` #-q表示只返回容器的id
須要注意的是:上面的命令只是刪除容器,不是刪除鏡像。ide
首先建立一個Dockerfile文件,這個文件是一個菜單。由files,environment,commonds 來構建一個images.學習
mkdir mydocker // 進入該目錄下 cd mydocker
touch Dcokerfile //用vim打開編輯 vim Dockerfile
下面FROM指令的意思是,告訴Docker你要基於哪一個鏡像進行構建測試
FORM docker/whalesay:latest
下面RUN指令,給鏡像安裝一個軟件fortunes(由於whalesay是基於ubuntu的,因此下面能夠執行一些對象的指令)
RUN apt-get -y update && apt-get install fortunes
下面的CMD指令, 告訴鏡像(這裏是指成功後的鏡像)最後須要去運行的指令
CMD /usr/games/fortune -a | cowsay
在Dockerfile同級目錄下運行,用docker build 來構建,-t (tag)是給鏡像一個tag,方便後面運行。表示Dockerfile在當前目錄下
docker build -t robin-whale .
咱們能夠看看執行的打印輸出,能夠了解下詳細的執行過程,成功會打印輸出:Successfully built c5857....
還記得怎麼查看嗎?對,你猜對了!就是用images來查看
docker images
能夠看到第一行,就是咱們剛剛構建的鏡像。
在這裏建立帳號
註冊帳號後,登錄。在本身的主頁面,點擊 create Repository建立一個本身的倉庫。
Visibility 這裏選擇public,這樣才能分享給他人使用,咱們是要擁抱開源。
在上傳鏡像以前,先給你的images打上你本身的標籤吧!證實這是個人images,可能一不當心,你就出名了,哈哈!!!
帳戶名/鏡像:版本
這裏[帳戶名/]就是你的標籤,官方給出的是,標籤用你的docker hub帳戶名。給某個鏡像打標籤用 docker tag
docker tag c58570c0ad0d robinyang0909/robin-whale:latest //docker tag 鏡像id 新標籤:版本
再來執行 docker images 看看
能夠看到 robinyang0909/robin-whale這個鏡像生成了。再看時間,能夠發現,並無新建一個鏡像,只是新建了一個images名,指向了robin-whale這個鏡像。
萬事俱備,如今能夠上傳本身的鏡像了!你已經火燒眉毛出名了嗎?別慌,先登陸下你的帳戶。
docker login
執行上面命令,而後輸入你的帳戶名和密碼,出現 Login Succeeded 登錄成功。
docker push robinyang0909/robin-whale
回車,開始push你的鏡像,過程估計有點慢,由於docker hub 畢竟不是咱們作的,等誰有能力了,大家就去整一個牛逼的開源技術,而後服務器就放在咱們本身國家。
push成功後顯示結果:
怎麼測試咱們push到docker hub上的是一個完整的鏡像呢?對,你猜對了!刪除本地鏡像,而後從新從倉庫下載。
有的程序員有「潔癖」,不想在本身的電腦放一些沒用的東西佔內存,好比剛開始下載的 hello-world鏡像,我就想刪掉!
docker rmi c58570c0ad0d # 你的id確定跟這裏不同
要是上面的命令刪不掉的話,用下面的試試:
docker rmi -f c58570c0ad0d #強制刪除
固然,剛開始學習,你的機器上估計也沒有什麼重要的鏡像,應該均可以刪除吧!這裏教你一招,清空!慎用!
docker rmi -f `docker images -a -q`
好了,經理上面的刪除鏡像,相信你已經刪除完那個上傳的鏡像。開始下載運行本身的鏡像吧!怎麼作?相信你沒有忘記,就在最上面, 對!docker run ..
docker run robinyang0909/robin-whale
記得加上本身帳戶名,回車,開始下載。估計有點慢,由於咱們上傳到的是docker hub上,不是國內服務器。
看到上圖的話,說明你本身構建鏡像,上傳,下載,運行這幾步都是成功的!恭喜你成功了邁出了第一步。如今你已經慢慢入門的,能夠去說,我會使用docker了,哈哈!
這裏再來回想一個問題:上面咱們在上傳鏡像以前對本身的鏡像打了tag,爲何要這麼作?在下載本身上傳的鏡像,相信你已經想到了,若是不加上本身帳戶名的話,那麼你們都上傳,要是遇到同名的鏡像咋辦!下載該下載誰的!加上本身的用戶名,就是起一個namespace的做用,相似java裏的包名做用。用戶名是不會重複的,由於你註冊的時候,保證了你的用戶名具備惟一性。