容器相似於一個linux環境,是經過鏡像建立啓動的,能夠理解爲在鏡像的最上一層建立一個可讀寫層,鏡像自己是隻讀的,容器的讀寫不會改變鏡像。html
#docker run -itd --name nginx1 nginx:latest
基本的建立攜帶 i t d這三個參數便可,表示的意義分別以下;
-i: 以交互模式運行容器,一般與 -t 同時使用;
-d: 後臺運行容器,並返回容器ID;
-t: 爲容器從新分配一個僞輸入終端,一般與 -i 同時使用;linux
nginx1和nginx:latest分別表示建立的容器名和所使用的鏡像,建立完成後使用 docker ps 命令便可看到新建並運行的容器nginx
#docker run -itd --name nginx2 -p 8080:80 nginx:latest
指定映射端口,將容器中的80端口映射到宿主機的8080端口上;這樣就能夠經過訪問宿主機的8080端口達到訪問容器的目的docker
#docker run -itd --name nginx3 --cpus 1 nginx:latest
限制cpu最大可用核數bash
#docker run -itd --name nginx5 --cpu-shares 512 nginx:latest
設置cpu的權重,默認值爲1024;不設置或將其設置爲0,均使用默認值;若是5個容器都是默認值1024,則平均分配ide
#docker run -itd --name nginx4 -m 100m nginx:latest
限制最大可用內存rest
#docker run -itd --name nginx6 -m 100m --oom-kill-disable nginx:latest
默認狀況下,在出現out-of-memory(OOM)錯誤時,系統會殺死容器內的進程來獲取更多的內存空間;在使用了-m限制容器內存後能夠將oom-kill禁用日誌
#docker ps
查詢當前運行的容器htm
#docker ps -a
這裏咱們先用docker stop nginx1關閉nginx1容器,再使用-a能夠看到全部容器信息進程
#docker ps -aq
查詢全部容器的id號
#docker log nginx2
查看容器的日誌信息
#docker inspect nginx2
用來查詢容器的詳細信息,包含cpu、內容、端口、目錄等信息
#docker top nginx2
查詢容器的進程信息
#docker port nginx2
查看容器的端口映射
#docker stats nginx2
實時查看容器的資源利用率
#docker exec -it nginx2 bash
進入容器,退出後容器仍然爲運行狀態
#docker cp /tmp/test.txt nginx2:/tmp
拷貝文件到nginx2容器的/tmp目錄下;將容器內的文件拷貝到宿主機則相反
#docker start|stop|restart nginx2
即啓動、中止、重啓容器
#docker rm nginx2
刪除重啓,在執行前須要保證容器爲中止狀態,不然rm失敗
#docker commit nginx2 nginx:v2
將容器提交成爲一個鏡像,當前容器的改動會持久化到nginx:v2鏡像中
#docker volume create nginx-vol
建立volume,指定名稱爲nginx-vol
#docker volume ls
查詢已經建立的volume
#docker volume inspect nginx-vol
查看volume的詳細信息,能夠看到對於的掛載路徑
#docker run -itd --name nginxvol-test -p:8081:80 --mount src=nginx-vol,dst=/usr/share/nginx/html nginx:latest
使用volume建立容器,指定容器掛載目錄爲/usr/share/nginx/html
此時查看nginx-vol會發現容器中掛載目錄下的html文件;在volume下新增文件也會同步到容器中
Docker inepct命令能夠看到容器的volume信息
#docker volume rm nginx-vol
nginx-vol非使用時才能夠執行刪除操做
#docker run -itd --name nginxBind-test -p:8082:80 --mount type=bind,src=/root/www/,dst=/usr/share/nginx/html nginx:latest
建立容器時攜帶type=bind,並指定src和dst目錄
docker insepct 命令能夠看到該容器的bind信息