1. 程式人生 > >## Docker 筆記整理(一)

## Docker 筆記整理(一)

Docker 簡單筆記(一)

學的挺慢忘得真快。。。寫個筆記吧 -.-||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 類似jvm一樣直接跑在系統上提供所有依賴,配置。快速部署應用。(Linux container技術的封裝後。“pxe—>cobbler”)

主機級別的虛擬化: 1.直接在硬體上安裝虛擬化軟體 2.在一個特定系統上使用虛擬化(kvm xen) docker可以使一個完整的,被隔離的裸機( container)跑在系統上。namespace+cgroups這兩種機制來實現虛擬化。 虛擬機器的隔離性: linux 核心3.8+預設原生支援這6種namespace名稱空間。也就是centos7以後。

1.UTS #主機名和域名 2.MOUNT #檔案系統樹 3.IPC #訊號,訊息佇列。 4.PID #程序樹都有獨立的“init” 5.USER #使用者 6.NETWORK #網路裝置 資源分配 核心通過cgroeps把系統資源(bikio、cpu、memory等)分配給各container使用。 namespace+cgroups這兩種機制來實現虛擬化。

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映象基礎操作: 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 

是時候吃飯了。。。。