Docker學習--docker的基本認識
1、Docker 架構
Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和創建Docker容器。
Docker 容器通過 Docker 鏡像來創建。
容器與鏡像的關系類似於面向對象編程中的對象與類。
2、Ubuntu16.04上安裝docker比較容易,如果你的Ubuntu系統當中還沒有安裝docker,輸入docker命令後,Ubuntu16.04系統會提示你執行怎樣的命令完成docker的安裝。
3、docker的使用:基本的docker命令
1)
docker run ubuntu:15.10 /bin/echo "Hello world"
語句參數說明:
docker: Docker 的二進制執行文件。
run:與前面的 docker 組合來運行一個容器。
ubuntu:15.10指定要運行的鏡像,Docker首先從本地主機上查找鏡像是否存在,如果不存在,Docker 就會從鏡像倉庫 Docker Hub 下載公共鏡像。
/bin/echo "Hello world": 在啟動的容器裏執行的命令
以上命令完整的意思可以理解為:Docker 以 ubuntu15.10 鏡像創建一個新容器,然後在容器裏執行 bin/echo "Hello world"語句。
2)容器的啟動方式
1>啟動命令行交互模式的容器,即為容器啟動偽終端。
docker run -i -t ubuntu:15.10 /bin/bash
語句參數說明:
-t:在新容器內指定一個偽終端或終端。
-i:允許你對容器內的標準輸入 (STDIN) 進行交互。
此時我們已進入一個 ubuntu15.10系統的容器
我們嘗試在容器中運行命令 cat /proc/version和ls分別查看當前系統的版本信息和當前目錄下的文件列表
2>啟動後臺運行模式的容器,使用-d參數
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
標題說明:
CONTAINER ID:容器ID
NAMES:自動分配的容器名稱
在容器內使用docker logs命令,查看容器內的標準輸出
docker logs e403feed3e7a
因為docker在創建並運行容器的時候自動為我們的容器分配了id和名字,所以我們還可以使用以下命令進行日誌的查看:
docker logs sad_agnesi
可以看到效果是一樣的。
3)容器的停止:使用docker stop 容器id/容器名
1>根據容器id停止指定的容器
docker stop e403feed3e7a
2>根據指定容器名停止容器
docker stop sad_agnesi
4)獲取或者拉新鏡像
docker pull ubuntu:15.10
5)創建鏡像
當我們從docker鏡像倉庫中下載的鏡像不能滿足我們的需求時,我們可以通過以下兩種方式對鏡像進行更改。
1>從已經創建的容器中更新鏡像,並且提交這個容器鏡像
我們通過需要修改的鏡像創建一個容器並運行容器。
docker run -t -i ubuntu:15.10 /bin/bash
在運行的容器偽終端內使用 apt-get update 命令進行應用更新。
在完成操作之後,輸入 exit命令來退出這個容器的偽終端。
此時容器ID為748bddac7d6d的容器,是按我們的需求更改了的容器。我們可以通過命令 docker commit來提交容器副本。
參數說明:
-m:提交日誌信息
-a:指定鏡像作者
748bddac7d6d:指定提交的容器ID
runoob/ubuntu:v2:指定要創建的目標鏡像名
我們可以使用 docker images 命令來查看我們的新鏡像 runoob/ubuntu:v2,如上圖。
使用我們的新鏡像 runoob/ubuntu 來啟動一個容器:
2>使用 Dockerfile 指令來構建一個新的鏡像
我們使用命令 docker build , 從零開始來構建一個新的鏡像。為此,我們需要創建一個 Dockerfile 文件,其中包含一組指令來告訴 Docker 如何構建我們的鏡像。
執行鏡像構建文件:
構建命令參數說明:
-t :指定要創建的目標鏡像名
. :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑
查看我們新構建的鏡像:
以我們新構建的鏡像啟動一個容器:
從上面看到新鏡像已經包含我們創建的用戶lfy。
對Dockerfile構建鏡像文件說明:
每一個指令都會在鏡像上創建一個新的層,每一個指令的前綴都必須是大寫的。
第一條FROM,指定從哪個鏡像源創建新的鏡像。
RUN 指令告訴docker 在鏡像內執行命令,安裝了什麽。
給鏡像增加tag標簽:使用 docker tag 命令
可以看到,執行docker tag命令是為鏡像新添加一個標簽,而不是修改原有的標簽。
6)鏡像的刪除:鏡像的刪除,需要先停止相應鏡像的容器的運行,否則會報錯。
我們可以使用如下命令查看當前系統已經創建的所有容器,無論其是否在啟動運行。
刪除容器:
刪除指定鏡像:
小結:
1>刪除容器使用命令docker rm 容器id/容器名;刪除鏡像使用命令docker rmi 鏡像id/鏡像名。
2>刪除鏡像前,需要先刪除容器。
7)docker容器的連接
docker run -d -p 4000:22 -p 4001:8080 -p 4002:1521 -p 4003:445 -p 4004:3999 -p 4005:8443 -p 4006:18011 -p 4007:18043 --name usdp40 -h usdp40 --privileged 127.0.0.1:5000/usdp/video:c82 /etc/init.d/after.local
-P :是容器內部端口隨機映射到主機的高端口。
-p : 是容器內部端口綁定到指定的主機端口。
Docker學習--docker的基本認識