一、Docker Toolbox
Docker本身需要在Linux上運(yùn)行,所以想要在windows和mac系統(tǒng)下運(yùn)行,你需要安裝一些軟件。Docker Toolbox就是一個(gè)軟件包,可以登陸官網(wǎng)下載系統(tǒng)對應(yīng)版本。

安裝完成以后會有兩個(gè)使用docker的工具:一個(gè)是命令行,一個(gè)是圖形界面。

打開Docker Quickstart Terminal工具,默認(rèn)會創(chuàng)建一個(gè)default的虛擬機(jī):

二、Image
在Docker Hub網(wǎng)站上面,可以找到別人做好的一些鏡像,有提供基礎(chǔ)環(huán)境的鏡像如,Ubuntu,Centos等等,也有一些安裝了軟件的鏡像。

使用docker命令下載所需鏡像到本地電腦上,不過當(dāng)你不確定你要下載的鏡像的名字可以先去搜索一下,比如你要搜索跟Centos相關(guān)的鏡像:
搜索鏡像
docker search centos

官方提供的鏡像一般沒有前綴,就像第一個(gè)centos。
下載鏡像
比如要下載cenos鏡像
docker pull centos

使用docker官網(wǎng)提供的registry tree可能會有點(diǎn)慢,可以選擇使用國內(nèi)提供的一些鏡像服務(wù),比如阿里云提供的服務(wù),這樣會快很多。
查看鏡像
下載完成以后,查看已下載鏡像可以輸入:
docker images

三、container
創(chuàng)建容器
有了鏡像,就可以運(yùn)行鏡像去創(chuàng)建容器。比如:
docker run centos /bin/echo 'hello'

docker run 后面跟的是鏡像名字,接著是你希望在創(chuàng)建容器中運(yùn)行的命令,上面運(yùn)行的是使用echo命令輸入hello。
查看容器
docker ps

沒有容器,原因是剛運(yùn)行的容器執(zhí)行完命令后就退出了??梢酝ㄟ^加上--all的選項(xiàng)查看所以容器:

CONTAINER ID表示容器的id,IMAGE表示使用的鏡像,COMMNAND表示運(yùn)行的命令,CREATED表示容器創(chuàng)建的時(shí)間,STATUS表示容器狀態(tài),NAME表示容器的名字,如果不手動指定,會默認(rèn)生成一個(gè)名字。
我們可以基于同一個(gè)鏡像創(chuàng)建不同的容器:

刪除容器
docker rm CONTAINER ID

指定容器名
創(chuàng)建容器時(shí)可以使用--name的選項(xiàng)指定容器名字,方便后續(xù)對該容器的操作:

查看容器日志
docker logs CONTAINER NAME
停止容器
docker stop CONTAINER NAME
重啟容器
docker restart CONTAINER NAME
啟動容器
docker start CONTAINER NAME

每運(yùn)行一次容器都會輸出一個(gè)hello,所以最后的log里有三個(gè)hello。
創(chuàng)建帶互動的容器
docker run -i -t centos /bin/bash
-i或者--interactive選項(xiàng)表示創(chuàng)建一個(gè)帶交互的容器
-t或者--tty選項(xiàng)表示給容器附加一個(gè)終端
/bin/bash表示終端的位置
執(zhí)行命令后你會看到你已經(jīng)進(jìn)入到容器里面了,容器的主機(jī)名就是容器的id,在里面可以執(zhí)行命令,安裝應(yīng)用等等。

四、創(chuàng)建鏡像
手工創(chuàng)建
docker commit -m '提交日志' -a '作者' 容器ID 鏡像名:容器標(biāo)簽
比如在容器里安裝了nodejs的應(yīng)用,想要保存修改,作為鏡像使用??梢詧?zhí)行
docker commit -m '安裝 nodejs' -a 'beckjiang' b5f1e430c603 beckjiang/nodejs-demo:latest
使用Dockerfile創(chuàng)建
使用dockerfile創(chuàng)建會更靈活一些。比如還是創(chuàng)建一個(gè)安裝有nodejs應(yīng)用的鏡像,
先創(chuàng)建目錄,進(jìn)入目錄,編輯dockerfile:

進(jìn)入nodejs-demo目錄下后,創(chuàng)建Dockerfile文件,編輯文件:
FROM centos
MAINTAINER beckjiang
RUN curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
RUN yum install nodejs -y
一個(gè)最基本的Dockerfile就這樣寫好了,接著就是用這個(gè)Dockerfile創(chuàng)建鏡像?;氐矫钚校?dāng)前所在位置為nodejs-demo里面,運(yùn)行命令:
docker build --tag beckjiang/nodejs-demo:latest .
--tag表示鏡像的名字以及tag;
. 表示當(dāng)前目錄下去尋找Dockerfile
推送鏡像到Docker hub
Docker hub是一個(gè)保存鏡像的地方,可以登陸網(wǎng)站注冊賬號,注冊完成后,可以在命令行登陸并把自己創(chuàng)見的鏡像推送到Docker hub上面。
登陸Docker hub
docker login
隨后輸入帳號,密碼。
推送鏡像
登陸成功后,可以把鏡像推送上去
docker push beckjiang/nodejs-demo
docker只會把有變化的部分上傳上去。