## Docker 筆記整理(一)
Docker 簡單筆記(一)
學的挺慢忘得真快。。。寫個筆記吧 -.-||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 類似jvm一樣直接跑在系統上提供所有依賴,配置。快速部署應用。(Linux container技術的封裝後。“pxe—>cobbler”)
主機級別的虛擬化: 1.直接在硬體上安裝虛擬化軟體 2.在一個特定系統上使用虛擬化(kvm xen) docker可以使一個完整的,被隔離的裸機( container)跑在系統上。namespace+cgroups這兩種機制來實現虛擬化。 虛擬機器的隔離性: linux 核心3.8+預設原生支援這6種namespace名稱空間。也就是centos7以後。
docker 架構 c/s架構 Containers:容器 Images:映象、映像 Registry:Image Repositories docker客戶端傳遞指令———>服務端監聽,通過映象來建立例項。<————registry提供映象倉庫。
registry: 提供映象 提供使用者認證 風格: nginx:latest nginx:1.0 映象和container關係: 映象就像可執行檔案(rm)他不變。 container就像rm開啟的程序,可以rm不同的檔案,基於rm命令。
docker管理的物件(增刪改查): image、container、network、volumes、plugins等
docker安裝 1.核心3.10+ 2.extras基本源內會提供一個老版本的
由於網路原因,可以把裡面的url改成清華大學源相應的位置.
直接截取了一部分:
[docker-ce-stable] name=Docker CE Stable - $basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7/$basearch/stable enabled=1 gpgcheck=1 gpgkey=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/gpg :%s$https://download.docker.com/$=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/$
2.安裝docker #此處叫docker-ce
[[email protected] ~]# yum install docker-ce
3.修改配置檔案: 配置主檔案:/etc/docker/daemon.json #預設不存在,可以手動建立編輯: #新增加速器,k-v風格的陣列,可以新增多個。
[[email protected] ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
4.重啟服務即可
docker簡單使用 檢視docker當前版本:
[[email protected] ~]# docker version
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:23:03 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:25:29 2018
OS/Arch: linux/amd64
Experimental: false
docker 常用命令:
docker search XXX 搜尋映象
docker pull XXX:YYY 下載映象
docker rm XXX:YYY 刪除映象
docker image ls 列出映象
docker create [OPTION] IMAGE 建立一個容器
docker run [OPTION] IMAGE 建立並且執行一個容器
#-it 創建出一個互動式介面(映象有的話)
#-name 指定名字
#-d 後臺
docker pause/unpause 暫停/開啟一個服務
docker kill 相當於kill -9
docker start/stop
docker exec [option] CONTAINER 在容器內執行操作
docker logs CONTAINER 檢視日誌
例子:
[[email protected] ~]# docker run --name tom nginx:latest
執行一個容器;他會執行映象預設的命令 “ docker info | grep cmd ” 可以看到
[[email protected] ~]# docker exec -it tom /bin/sh
# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
#
在容器內執行操作;
[[email protected] ~]# docker inspect tom
檢視容器資訊;
[[email protected] ~]# docker logs tom
172.17.0.1 - - [21/Oct/2018:05:48:40 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"
檢視容器日誌;
docker狀態轉換結構: docker映象基礎操作: docker映象含有啟動容器檔案系統和內容的。最底層為bootfs引導容器啟動有BootLoader(grub?lilo?)和kernel,上面為rootfs是檔案系統,不過和centos剛啟動時一樣預設是隻讀的,如果想要修改會再抽出一層進行讀寫,在容器上每啟動一個服務或者配置其他功能都會抽出獨立的一層進行修改,然後掛載使用(分層構建,聯合掛載)。docker container rm 時那些可寫層會被刪除。 預設搜尋或者下載映象docer deamon會去找docker hub。 所以docker檔案系統一定得用特殊的檔案系統。 Aufs:烏班圖在用 overlay:centos在用,構建在xfs上的二級檔案系統。資訊裡可以看到
[[email protected] ~]# docker info | grep -A 3 Storage
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: false
registry=repository+index 公共registry---->修改映象---->推送到自己的registry---->下載使用
docker映象製作 A:基於已有的容器製作 commit B:docker file 用“build”
docker commit使用:
[[email protected] ~]# docker commit --help
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-p 暫停(pause)
-c 修改預設執行的指令
-a 作者
例子:
[[email protected] ~]# docker run -it --name AA busybox
/ # echo "AA" > a.txt
/ # ls
a.txt bin dev etc home proc root sys tmp usr var
/ # exit
[[email protected] ~]# docker commit AA
sha256:90b6168c4e41d87299bfc631041c94ddb561e3845b0397f3d7d23a6d8acf9df7
[[email protected] ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 90b6168c4e41 About a minute ago 1.15MB
nginx latest dbfc48660aeb 5 days ago 109MB
新制作的沒有倉庫和標籤。 #一個映象可以有多個標籤(軟連結?)刪除 一個標籤不會真的刪除。
製作標籤: docker tag hub賬號/倉庫名:標籤
[[email protected] ~]# docker tag 90b6168c4e41 haha:hehe
[[email protected] ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
haha hehe 90b6168c4e41 10 minutes ago 1.15MB
也可以製作時修改命令及標籤(命令可以在容器裡–help一下) docker commit -a “ZW” -c “CMD [”/bin/httpd","-f","-h","/data/html"]" web hehe:web
對於自己映象管理可以推送到網上,也可以直接匯入匯出。 推送映象push方法: 1.登入hub賬號
[[email protected] ~]# docker login -u ZW
Password:
2推送,會吧倉庫全推到hub上 #docker push 賬號/倉庫 注意本地自己建立的名字要和網上的一樣
[[email protected] ~]# docker push ZW/haha
如果不是hub上,那就需要把網址路徑寫全。假設是阿里雲 地址是https://dev.aliyun.com/search.html 可以註冊一下,開啟管理中心,建立映象倉庫。會給操作指南。
登入 登入密碼是單獨設定的registry密碼
[[email protected] ~]# docker login --username=鄭偉的號吧 registry.cn-qingdao.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
修改標籤:
[[email protected] ~]# docker tag hehe:zw2 registry.cn-qingdao.aliyuncs.com/zhengw/haha:latest
推送
docker push registry.cn-qingdao.aliyuncs.com/zhengw/haha:latest
然後可以登入驗證 映象匯入匯出方法: 直接打包去另外機子上使用 打包:
[[email protected]host ~]# docker save haha:hehe -o image.gz
[[email protected] ~]# ls
anaconda-ks.cfg image.gz
使用:
[[email protected] ~]# docker load -i image.gz
是時候吃飯了。。。。