Docker基本部署及基本控制命令
Docker概述
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然後發佈到任何流行的 Linux或Windows 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口,兩者之間完全獨立。
與虛擬機的比較
特性 | 容器 | 虛擬機 |
---|---|---|
啓動速度 | 秒級 | 分鐘級 |
硬盤使用 | 一般爲MB | 一般爲GB |
性能 | 接近原生 | 弱於原生 |
系統支持量 | 單擊支持上千個容器 | 一般幾十個 |
隔離性 | 完全屏蔽底層 | 相對獨立 |
Docker核心概念
鏡像(Image): 類似虛擬機鏡像
容器(Container): 類似linux系統環境,運行和隔離應用。容器從鏡像啓動的時候,docker會在鏡像的最上一層創建一個可寫層,鏡像本身是隻讀的,保持不變。
倉庫(Repository): 每個倉庫存放某一類鏡像。
容器、倉庫、鏡像運行關係圖:
Docker基本部署
1、安裝環境包
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
2、使用阿里的docker倉庫
[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
//安裝docker-ce
[root@localhost ~]# yum install -y docker-ce
3、鏡像下載加速
[root@localhost docker]# tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors" : ["https://abc1234.mirror.aliyuncs.com"] //加速器地址由阿里雲官網自行獲取(這裏是隨便寫的)
}
EOF
[root@localhost ~]# systemctl daemon-reload //刷新全局
[root@localhost ~]# systemctl restart docker
Docker基本控制命令
1、鏡像篇
搜索鏡像
docker search 關鍵字
獲取鏡像
docker pull 倉庫名[:標籤]
查看已存在的所有鏡像
docker images
實例:
[root@localhost data]# docker images
REPOSITORY(倉庫) TAG(標籤) IMAGE ID(鏡像ID) CREATED(創建時間)
nginx latest 231d40e811cd 4 weeks ago
查看鏡像信息
docker images 倉庫名[:標籤]
docker inspect 鏡像ID號
更改原有標籤
docker tag 原名稱[:原標籤] 新名稱[:新標籤]
刪除鏡像
docker rmi 倉庫名[:標籤]
導出鏡像
docker save -o 保存文件名 保存的鏡像名
載入鏡像
docker load --input 保存文件名
docker load < 保存文件名
上傳鏡像
docker push 倉庫名[:標籤]
2、容器篇
創建容器
docker create [選項] 運行的鏡像 /bin/bash環境
常用選項:
“-i” 容器的標準輸入常開
“-t” 讓docker分配一個僞終端
查看容器運行狀態
docker ps [選項]
常用選項:
“-a” 列出最近一次啓動的容器
案例
CONTAINER ID(容器ID) IMAGE(鏡像名) COMMAND(環境) CREATED(建立時間) STATUS(狀態) PORTS(容器的端口信息和使用的連接類型(tcp\udp)) NAMES(自動分配的容器名稱)
05e073ab47d4 nginx:latest "/bin/bash" 3 hours ago Up 3 hours 80/tcp musing_lovelace
啓動容器
docker start 容器ID/名稱
終止容器
docker stop 容器ID/名稱
創建容器並啓動執行shell命令
docker run [選項] 容器名 執行的命令
常用選項:
“-d” 在後臺運行
run 執行鏡像流程:
創建容器→啓動容器→進入容器執行命令→退出容器
若鏡像不存在則會多出下載鏡像這一步
實例
//以/usr/bin/bash交互模式,啓動paigeeworld/centos7容器,執行ls /命令
docker run paigeeworld/centos7 /usr/bin/bash -c ls /
進入容器
docker exec [選項] 容器ID/名稱 /bin/bash #以交互模式執行容器
導出容器
docker export 容器ID/名稱 > 保存文件名
導入容器(僅能導入容器中的鏡像,容器需要手動創建)
cat 保存文件名 | docker import -生成的鏡像名:標籤
刪除容器
docker rm [選項] 容器ID/名稱
批量刪除容器
docker ps -a | awk '{"docker rm "$1}' | bash
exec與run的區別:
exec | run |
---|---|
退出後不會影響容器狀態(進去前:up 退出後:up) | 退出後會改變容器狀態(進去前:up 退出後:exited) |