title: docker部署以及基本鏡像管理
image:images\theme\docker.jpg
容器在本質上是一個進程,擁有自己的IP地址 系統文件 主機名 進程管理
程序:shell、軟件、命令
進程:正在運行的程序
命令執行結束時 進程被關閉 釋放內存資源
容器和虛擬機的區別:
虛擬機:1、模擬計算機硬件 啓動時正常走啓動流程;2、虛擬機有自己的內核;3、需要走開機啓動流程,有自己的內核
容器:1、不需要模擬計算機硬件;2、共用宿主的內核;3、不需要走開機啓動流程,共用宿主機內核
容器的優勢:啓動快(直接啓動第一個進程 不走開機啓動流程)、性能高(共用宿主機內核)、損耗少(不需要模擬計算機硬件 不損耗硬件性能)、輕量級(消耗少)
使用容器替代虛擬機最終目的:最終目的是降低成本
100臺虛擬機 需要在10臺宿主機上跑
100臺容器 需要跑在6臺宿主機上 省4臺宿主機的管理費用
補充說明:
開機啓動流程:按下電源按鈕,BIOS開機自檢,根據BIOS的啓動項選擇設備來啓動,選擇硬盤啓動,引導程序,選擇操作系統,加載內核,啓動第一個進程,第一個進程再啓動其他進程,操作系統啓動完成
BIOS啓動項的順序:從上到下
引導程序兩種:引導程序放在磁盤的第一個扇區
grub
uefi:支持圖形界面
docker發展歷史:
2008年 dotcloud paas
2013年要黃了 CEO決定開源,絕地逢生
傳統docker 1.1-1.13
docker ce 社區辦 17.03 17.06 17.19 17.12 18.03 18.06 18.09 19.03
docker ee 企業版 17
傳統docker和docker ce不兼容 所以在安裝docker ce之前要檢查一下環境中有沒有傳統docker
安裝docker
安裝前檢查環境中是否已經安裝傳統docker,以免不兼容問題
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo 下載docker源
sed -i s+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo 修改爲國內地址
yum install docker-ce -y
systemctl enable docker
systemctl start docker
docker version 測試檢查
docker 是使用golang語言開發
docker是一個CS架構:主要鏡像 容器 倉庫 網絡 存儲 監控
docker 是一個軟件的打包技術
docker容器 安裝好mysql5.7 打包成鏡像 發不到docker倉庫
用戶:下載docker鏡像 mysql5.7,啓動容器 啓動mysql5.7
類似功能:kvm也可以做到 在虛擬機中安裝mysql5.7 然後導出kvm的磁盤文件,生成虛擬機配置文件 導入啓動虛擬機
pull鏡像並運行容器
docker run -d -p 80:80 nginx:latest
run 創建並啓動一個容器
-d 放後臺啓動
-p 端口映射
nginx:latest docker鏡像名稱
搜索鏡像(倉庫地址在國外)
docker search httpd
配置docker鏡像加速
1、docker鏡像加速(新建json文件)
[root@docker01 yum.repos.d]# cat /etc/docker/daemon.json { "registry-mirrors": [ "https://registry.docker-cn.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn" ] }
2、重啓docker
systemctl restart docker
3、測試
docker search httpd
解釋:
[root@docker01 yum.repos.d]# docker search httpd
NAME 鏡像名字 DESCRIPTION STARS OFFICIAL AUTOMATED
用戶名 鏡像名字 描述
使用鏡像時的原則:優先用官方的 星數多的
下載鏡像:不指定版本 默認下載最新版(Using default tag: latest)
docker image pull httpd
登錄官方網站 查看鏡像的版本
https://hub.docker.com/
如果pull的版本不存在會報錯:
Error response from daemon: manifest for httpd:2.4.42 not found: manifest unknown: manifest unknown
docker pull 下載鏡像
docker push 推送鏡像
查看 已有鏡像
[root@docker01 yum.repos.d]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 9beeba249f3e 10 days ago 127MB httpd 2.4.43 d4e60c8eb27a 10 days ago 166MB httpd latest d4e60c8eb27a 10 days ago 166MB
導出鏡像
[root@docker01 yum.repos.d]# docker image save nginx:latest -o docker_nginx.tar.gz
[root@docker01 yum.repos.d]# ll
total 127572
-rw-r--r-- 1 root root 2523 May 26 10:23 CentOS-Base.repo
-rw-r--r-- 1 root root 2880 May 26 10:24 docker-ce.repo
-rw------- 1 root root 130625536 May 26 11:21docker_nginx.tar.gz`
drwxr-xr-x. 2 root root 187 May 26 10:23 test
[root@docker01 yum.repos.d]#
鏡像是把一堆文件打成的壓縮包 可以解壓
導入鏡像
[root@docker02 ~]# docker image load -i docker_nginx.tar.gz
docker pull拉取到本地的鏡像 存放在本地路徑:
/var/lib/docker/overlay2/
刪除鏡像
docker image rm b7b28af77ffe id方式 docker image rm alpine:latest 名字方式
查看鏡像列表
[root@docker01 ~]# docker images
docker鏡像名字 類似linux硬連接
docker鏡像id 類似linuxinode
鏡像在容器使用時 不能刪除
docker命令都進行了分組
docker image 鏡像命令
docker container 容器命令
docker volume 卷命令
docker network 網絡命令
[root@docker01 ~]# docker image
build 構建鏡像
import 導入鏡像 不會導入鏡像的名稱和版本 不推薦
load 導入鏡像 會導入鏡像的名稱和版本
prune 清理無效鏡像
push 推送
save 導出
history 構建鏡像的歷史命令
inspect 鏡像屬性
ls 查看鏡像
pull 拉取
rm 刪除鏡像
tag 打標籤
鏡像打標籤
docker image tag a7fc88580f30 test:v1
查看鏡像屬性
docker image inspect a7fc88580f30
批量操作
批量導入鏡像
for n in ls *.tar.gz;do docker image load -i $n ; done
將多個鏡像打成一個包
docker image save nginx:latest centos httpd -o test.tar.gz