Docker 學習 | 基礎命令
阿新 • • 發佈:2019-05-11
共享數據 ear wrapper 生成 net ges esp 實現 pan
- 基本概念定義
- 基本組成
- 客戶端/守護進程
- C/S架構
- 本地/服務器
- 鏡像
- 容器基石
- 只讀文件系統
- 聯合加載(union mount)
- 容器
- 通過鏡像啟動
- 執行
- 寫時復制
- 倉庫
- 公有
- docker hub
- 私有
- 公有
- 相關技術簡介
- 依賴的Linux內核特性
- Namespace 命名空間 LXC Kernel Namespace
- 封裝 -> 代碼隔離->資源隔離
- PID 進程隔離 獨立進程表
- NET 管理網絡接口 network info
- IPC 進程通信 額外信息標記
- MNT 掛載點
- UTS 隔離內核和版本標識 hostname domain
- Users 用戶
- Cgroup 控制組 分配資源 資源限制 CPU 內存
- 資源限制
- 優先級設定
- 資源計量
- 資源控制
- chroot 隔離根文件系統
- 客戶端/守護進程
- 基本組成
- 基本操作
- 啟動容器 docker run Image
- 交互 docker run -i -t Image /bin/bash
- -name
- 查看進程 docker ps/top [-a ] / [-l]
- 詳細信息 docker inspect +id /+ name
- 交互 docker run -i -t Image /bin/bash
- 啟動停止容器 docker start -i name/id
- 刪除容器 docker rm 刪除已停止容器
- 啟動容器 docker run Image
- 守護形式運行容器(長期運行)
- 退出crtl +p ctrl+q
- 重新進去 sudo docker attach +id/name
- 後臺執行 docker run -d
- 查看容器日誌(內部運行情況) docker logs [-f一直跟蹤] [-t 加時間] [--tail最新] 名字
- 查看運行中容器進程 docker top + id/name
- 在運行容器(已啟動)中啟動運行新進程 docker exec [-d] [-i] [-name]
- 停止運行中的容器 docker stop 發結束信號停止 /kill 直接快速停止
- 部署靜態網站
- 容器端口映射 run -P 全部 /-p 指定
- 安裝nginx vim
- 停止後會重新分配IP
- 查看和刪除鏡像
- docker info 查看信息,包含存儲驅動
- 列出鏡像 docker images -a(所有中間層+其他鏡像)/-f 過濾條件/--no-trunc(完整的ID) /-q 只查看唯一ID
- 倉庫:REPOSITORY 倉庫 (一系列關聯鏡像集合) 組件倉庫 REGISTRY(一個一個獨立鏡像) 標簽TAG +倉庫名字 =獨立鏡像
- docker rmi -f 強制/ --no-prune 保留父鏡像
- 獲取推送鏡像
- docker search --no-trune/-s 3
- docker login 應該先登錄
- docker pull -a / --registry-mirror
- 1. /etc/default/docker 修改 2 . 添加 DOCKER_OPTS ="-registry-mirror = http://MIRROR-ADDR"
- http://www.daocloud.io 獲取鏡像連接(更改2)
- docker push
- 構建鏡像
- docker commit -a 作者/ -m 提交信息/-p 暫停
- docker build -t 標簽 -q 不顯示中間過程 利用Dockerfile創建
- Docker c/s模式
- Remote API CS 可遠程
- 三種連接方式 1.unix :///var/rundocker.sock (默認) 2.tcp://host:port 3.fd://socketfd
- 命令
- 服務連接相關 sdocker -d -D - H(host)
- Remote API相關
- 網絡設置相關 --ip = 0.0.0.0
- 倉庫相關
- 存儲相關
- 啟動配置文件 /etc/defaut/docker 修改後 要重啟服務
- 遠程訪問
- 修改/etc/defaut/docker 添加 - H tcp://0.0.0.0:2375
- export DOCKER_HOST = "tcp://0.0.0.0:2375" 可修改遠程 export DOCKER_HOST =" " 置空
- -H 選項可多個添加
- Dockerfile 指令
- FROM 基礎鏡像
- MAINTAINER 作者信息
- RUN 運行命令
- shell模式 RUN <command> exec模式 RUN ["executable", "param1", "param2"] 運行其他shell
- EXPOSE <> 多個端口 不能自動需再添加
- CMD (指定命令,參數,容器運行時默認行為 類似RUN, 會被覆蓋) ENTERPOINT(跟CMD一樣 )
- ADD <src> ...<dest> (包含解壓縮功能) COPY<src>..<dest>(普通復制推薦) VOLUME ["/data"] 共享數據
- WORKDIR /絕對路徑 設置工作目錄 ENV <key><value> <key>=<value> 環境變量
- USER daemon 用戶/用戶組/默認root ONBUILD [INSTRUCTION] 鏡像觸發器
- Dockfile 構建過程
- 運行基礎鏡像 執行指令 提交 刪除中間層容器(不刪鏡像)
- 可以通過調試中間層鏡像
- 自動構建緩存 添加--no-cache 不構建緩存 ,刷新 | ENC REFRESH_DATE 2019-05-01修改時間就可刷新
- docker hsitory 查看鏡像構建過程
- 網絡連接
- 網絡基礎
- Docker0 提供虛擬網橋 可以設置IP地址 相當於虛擬網卡
- 建立虛擬網僑 brctl addbr br0 && ifconfig br0 192.168.2.100 netmask 255.255.255.0
- 修改默認配置 -b=br0 重啟容器
- 互聯
- 默認允許所有容器互聯
- --icc =ture 全部可ping 通,同一個虛擬網橋,IP不可靠連接(ip變化)
- --link = cct1:webtest(別名) 環境變量env自動更新webtest,hosts也自動更新 wetest
- 拒絕連接
- --icc =false更改默認配置 全部拒絕
- 特定連接
- --icc =false --iptables=true --link 只允許link配置的容器連接
- 默認允許所有容器互聯
- 連接外部網絡
- --ip-forword=true 允許流量轉發 查看 sysctl net.ipv4.all.forwarding
- iptables linux包過濾防火墻 系統
- 表table nat fitter mango
- 鏈chain INPUT FORWARD
- 規則rule ACCEPT REJRECT DRON
- 允許端口映射訪問
- ‘限制IP訪問容器
- 網絡基礎
- 數據管理
- 數據卷
- 獨立於UFS 數據共享 不會因容器關閉而消失 放在host主機中
- docker run -it -v ~/datavalume:/data ubuntu /bin/bash
- 添加權限 docker run -it -v ~/datavalume:/data:ro ubuntu /bin/bas
- dockerfile 生成同名的數據卷是不同地址,故不能共享數據
- 數據卷容器
- 掛載數據卷容器 docker run -it --volume-from 鏡像名字
- 及時刪除了基類數據卷容器 ,不受影響, 數據卷不受容器影響
- 數據備份還原,遷移
- docker run -it --volume-from image -v $(pwd)/data:/data: wr ubuntu tar cvf /data/dvt5.tar /data/datavolume1 (壓縮,解壓縮類似)
- 數據卷
- 跨主機連接
- 使用網橋
- 兩主機 管理工具bridge-utils 同一網段
- 修改 /etc/network/interfaces | address network gateway bridge_port( eth0)
- 修改 /etc/default/docker |-b = br0 --fixed-cidr
- 優點 配置簡單,不依賴 缺點:同網段 劃分網段,不易實現和管理
- Open vSwitch 通常使用 apache2.0許可 虛擬開源多層交換機 gre 通用路由協議,隧道技術
- openvswitch - switch |網橋工具 bridge-utils
- 建立ovs網橋 |添加gre連接 |配置虛擬網橋 OVS接口
- weave 開源項目
- 安裝啟動weave 增加執行權限|weave launch 192.168.59.103(第一臺電腦ip)
- c2id=$(weave run 192.168.2/24(分配ip地址) -it Ubuntu /bin/bash)
- 使用網橋
Docker 學習 | 基礎命令