一.容器三大概念
1.鏡像 2.容器 相當於打隔斷,獨立的空間 3.倉庫
2.概念:由於在物理機上實行的隔離,啟動容器和啟動進程一樣快速
二.核心技術
1.Cgroups (Control Groups)-資源管理:控制最多使用多少內存,cpu,用來限制使用資源
2.NameSpace-命名空間 在總空間(系統驅動所有資源)的基礎上划分出獨立的空間,隔離6個東西如下:
1.主機名(一個終端改主機名,其余所有終端打開都能看到改過的主機名) -容器看不到
2.網絡命名空間(當一個終端改ip地址的時候,其余終端用原ip則登不上去)-容器ip變了
3.文件系統命名空間(chroot 改變根目錄路徑)
4.進程命名空間(pstree執行幾個進程,)只能看見自己的進程,別的進程看不見
5.信號向量命名空間(比如kill -l 有64個信號,發一個信號進程會有回應)
6.用戶隔離(不同的命名空間里有不同的用戶)
3.Selinux安全
三.Docker概念
1.是一套完整的容器管理系統
2.docker提供了一組命令,讓用戶更加直接方便的使用
3.優點:相比傳統虛擬化技術,容器更加簡潔高效,容器不需要虛擬機操作系統(缺點就是linux不能兼容windows),容器使用共享公共庫和程序
缺點:1.隔離線沒有虛擬化強(改一個所有全變了)
2.公用linux內核,安全性有先天缺陷
3.Selinux 難以控制
4.監控容器和容器排錯是挑戰
四.安裝docker
1.安裝前准備:
需要64位操作系統
至少是RHEL6.5以上的版本,強烈推薦RHEL7
關閉防火牆(必須)
2.配置yum源(創建兩台虛擬機docker1,docker2)
1.docker軟件包位於光盤RHEL-extras.iso下面
2.在物理機ftp目錄下創建文件夾extras
mkdir /var/ftp/extras
3.掛載光盤在此目錄下
mount RHEL-extras /var/ftp/extras
df -h 查看一下
4.安裝docker
yum -y install docker(35個包)
systemctl restart docker
systemctl enable docker
五.鏡像
1.在docker中容器是基於鏡像啟動的
2.鏡像 是啟動容器的核心
3.鏡像啟用分層設計
4.使用快照的cow技術,確保底層數據不丟失
5.查看鏡像 docker images
6.官網:(hub.docker.com網址上下載鏡像)
7.命令行搜索鏡像: docker search 關鍵字(如nginx)
]#docker search busybox
]#docker pull docker.io/busybox (這個是官方的,下載次數最多)
六.下載.上傳鏡像
]#docker help pull
]#docker pull [options] name[:tag| @digest]
]#docker pull docker.io/busybox 下載鏡像
]#docker push docker.io/busybox 上傳鏡像
七.打包鏡像
docker save 名稱(repository) : 標簽(tag) -o 文件名
docker1]#docker save docker.io/busybox:latest -o busybox.tar
docker1]#scp busybox.tar root@192.168.1.32:/root
docker2]#ls
docker2]# docker images
docker2]#docker load -i busybox.tar
docker2]#docker images
八.運行容器:
docker run -it docker.io/busybox:latest /bin/sh #/bin/sh 為啟動命令,如果不寫就為默認的啟動命令
/ # ps -ef 進程隔離
/ # hostname 主機名隔離
/ # ifconfig 網絡隔離
/ # ls / 文件系統隔離
/ # cat /etc/passwd 用戶隔離
/ # 信號向量命名空間隔離
九.鏡像常用命令 (鏡像:標簽)
1.docker history 查看鏡像的制作歷史
]#docker history docker.io/redis:latest
2.docker inspect 查看底層詳細信息
]#docker inspect docker.io/redis:latest
Env 環境變量
Cmd 啟動命令
3.docker images 查看鏡像列表
4.docker pull 下載鏡像
]#docker pull docker.io/busybox 下載鏡像
5.docker push 上傳鏡像
]#docker push docker.io/busybox 上傳鏡像
6.docker rmi 刪除本地鏡像
]#docker rmi docker.io/centos
7.docker save 鏡像另存為tar包
]#docker save docker.io/busybox:latest -o busybox.tar
8.docker load 使用tar包導入鏡像
]#docker load -i busybox.tar
9.docker search 搜索鏡像
10.docker tag 修改鏡像名稱和標簽
]#docker tag docker.io/centos:latest cen:v1 將 docker.io/centos:latest 改為 cen:v1
十.容器常用命令: (命令+id)
1.docker run 運行容器 #創建一個新的容器並且啟動
docker run -it docker.io/centos
2.docker run -itd docker.io/nginx:latest 啟動后放在后台(比如nginx)
docker inspect 882117d0581d 可以查看到nginx的地址
ping 172.17.0.2
curl 172.17.0.2
3.docker ps 查看容器列表
]#docker ps -a 顯示所有容器
]#docker ps -aq 只顯示ID
4.docker stop 關閉容器
通過docker ps 查看容器的Id docker stop id號 關閉容器
5.docker start 啟動容器
通過docker ps 查看容器的Id docker start id號 開啟容器
6.docker restart 重啟容器
通過docker ps 查看容器的Id docker restart id號 重啟容器
7.docker attach|exec 進入容器
1.docker attach 進入已經啟動的容器 連接的是systemd(上帝進程) exit會導致容器關閉 需要 ctrl + p q 放入后台
docker ps 查看id 后 docker attch id號 進入
2.docker exec 進入新的進程 比較常用(新開一個控制台) 直接退出后不會影響進程
docker exec -it id號 /bin/bash
進入后:pstree -p
8.docker inspect 查看容器底層信息
]#docker top 882117d0581d
9.docker top 查看容器進程列表
]#docker top 882117d0581d
10.docker rm 刪除容器
]#docker rm 882117d0581d