目錄
一:Docker概述
1、 Docker的優勢:
(1)環境一致性
(2)隔離性
(3)資源高效
(4)便捷性和可擴展性
2、Docker容器與傳統虛擬機的區別
3、Docker的應用場景
4、Docker核心
(1)鏡像(Image)
(2)容器(Container)
(3)倉庫(Repository)
二:Docker安裝
1:本安裝方式使用阿里的軟件倉庫
(1)關閉系統防火墻
(2)下載Docker的repo文件
(3)替換倉庫地址
(4)更新索引文件并安裝Docker
(5)添加國內鏡像站
(6)開啟Docker服務
(7)優化內核參數
三:Docker鏡像操作
1、Docker 鏡像操作列表
2、Docker鏡像操作案例
(1)獲取鏡像
(2)查看鏡像
(3)查看鏡像的詳細信息
(4)修改鏡像標簽
(5)刪除鏡像
1.用鏡像名刪除
2.用ID 刪除
(6)存出鏡像和載入鏡像
1.導出
2.刪除
3.導入
四、Docker容器操作
1、Docker 容器操作列表
2、Docker 容器操作案例?
(1)容器的創建與啟動
1.創建容器
2.查看所有的容器
3.容器的運行
4.利用容器執行命令(命令執行完畢后容器會退出)
5.在啟動容器時持續在后臺運行
(2)容器的終止
(3)進入容器
(4)容器導出
(5)容器導入生成鏡像
(6)容器刪除
一:Docker概述
Docker是一個開源的應用容器引擎,它允許開發者將應用及其依賴打包成一個輕量級、可移植的容器,然后這個容器可以在任何支持Docker的機器上運行,無論是物理機、虛擬機、云平臺還是數據中心。
1、 Docker的優勢:
(1)環境一致性
Docker容器在任何支持Docker的環境中運行時表現一致,解決了“在我的機器上運行正常,但在其他機器上就不行”的問題。
(2)隔離性
容器之間相互隔離,一個容器的故障或異常不會影響到其他容器的運行,提高了應用的穩定性和安全性。
(3)資源高效
與傳統虛擬機相比,Docker容器不需要額外的操作系統,因此資源消耗更少,啟動更快。
(4)便捷性和可擴展性
容器的啟動速度非常快,通常只需要幾秒鐘,可快速創建和銷毀容器,方便進行應用的快速部署和彈性擴展。
2、Docker容器與傳統虛擬機的區別
特性 | Docker容器 | 虛擬機 |
啟動速度 | 秒級 | 分鐘級 |
計算能力損耗 | 幾乎無 | 損耗50%左右 |
性能 | 接近原生 | 弱于 |
系統支持量 | 上千個 | 幾十個 |
隔離性 | 資源限制 | 完全隔離 |
3、Docker的應用場景
(1)開發環境管理
(2)持續集成和持續部署(CI/CD)
(3)微服務架構
(4)云計算
4、Docker核心
(1)鏡像(Image)
類似于虛擬機的快照,但是所占資源遠遠小于快照,可以理解為一個面向Docker容器引擎的只讀模板。可以用戶自己創建和更新現有的鏡像,也可以從網上下載已創建好的鏡像。
(2)容器(Container)
Docker的容器時從鏡像創建的運行實例,可以被啟動、停止、刪除。所創建的每一個容器都是相互隔離、互不可見、以保證安全性的平臺。
(3)倉庫(Repository)
Docker倉庫是用來集中保存鏡像的地方,創建自己的鏡像后,可以使用push命令將它上傳到公有倉庫(Public)或者私有倉庫(Private)。其他機器使用時可以從倉庫獲取。
二:Docker安裝
CentOS 系統安裝Docker有兩種放式:
(1)使用 CURL 獲得 Docker 的安裝腳本
(2)使用 YUM 倉庫安裝。
注意:目前Docker只能支持64位系統
1:本安裝方式使用阿里的軟件倉庫
(1)關閉系統防火墻
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/=enforcing/=disabled/' /etc/selinux/config
(2)下載Docker的repo文件
?curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(3)替換倉庫地址
sed -i 's/$releasever/8/g' /etc/yum.repos.d/docker-ce.repo
sed -i 's/$basearch/x86_64/g' /etc/yum.repos.d/docker-ce.repo
(4)更新索引文件并安裝Docker
dnf clean all
dnf makecache
dnf -y install docker-ce
(5)添加國內鏡像站
?vim /etc/docker/daemon.json
{
"exec-opts": ["netive.cgroupdriver=systemd"],"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com"]
}
(工信部網絡政策調整,docker.io、gcr.io等國際鏡像站不能訪問)
(6)開啟Docker服務
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
docker version
(7)優化內核參數
vim /etc/sysctl.conf
net.ipv4.ip_forward=1 #12
net.bridge.bridge-nf-call-iptables=1
net.bridge.brifge-nf-call-ip6tables=1sysctl -p
三:Docker鏡像操作
1、Docker 鏡像操作列表
命令 | 語法 | 參數/選項 | 說明 | 示例 |
拉取鏡像 | docker pull [OPTIONS] NAME[:TAG|@DIGEST] | -a:拉取所有標簽的鏡像 --disable-content-trust:禁用鏡像簽名驗證 | 從鏡像倉庫拉取鏡像到本地 | docker pull nginx:1.24.0 |
列出鏡像 | docker images [OPTIONS] [REPOSITORY[:TAG]] | -a:顯示所有鏡像(包括中間層) -q:僅顯示鏡像ID --digests:顯示摘要信息 | 列出本地所有鏡像的倉庫名、標簽、ID、創建時間及大小 | docker images -a |
查看鏡像詳情 | docker inspect [OPTIONS] IMAGE | -f:自定義輸出格式 --size(僅容器) | 查看鏡像的底層詳細信息(JSON格式) | docker inspect c15 |
修改鏡像標簽 | docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] | 為鏡像添加新標簽(不創建新鏡像) | docker tag nginx:1.24.0 nginx:v1 | |
刪除鏡像 | docker rmi [OPTIONS] IMAGE [IMAGE...] | -f:強制刪除 --no-prune:保留父鏡像層 | 刪除本地鏡像 | docker rmi nginx:v1 docker rmi c15 |
導出鏡像 | docker save -o FILE IMAGE[:TAG] | 將鏡像保存為tar文件 | docker save -o nginx.tar nginx:1.24.0 | |
導入鏡像 | docker load < FILE | 從tar文件加載鏡像 | docker load < nginx.tar |
2、Docker鏡像操作案例
運行 Docker 容器前需要本地存在對應的鏡像。如果不存在本地鏡像,Docker 就會嘗試從默認鏡像倉庫下載。鏡像倉庫是由 Docker 官方維護的一個公共倉庫,可以滿足用戶的絕大部分需求。用戶也可以通過配置來使用自定義的鏡像倉庫。
(1)獲取鏡像
docker pull nginx:1.24.0
(2)查看鏡像
docker images
(3)查看鏡像的詳細信息
docker inspect 6c0218
(4)修改鏡像標簽
docker tag nginx:1.24.0 nginx:v1
docker images
(5)刪除鏡像
刪除鏡像有兩種方式
1.用鏡像名刪除
docker rmi nginx:v1
2.用ID 刪除
docker rmi 6c0218
(6)存出鏡像和載入鏡像
1.導出
docker save -o nginx nginx:1.24.0
ls
2.刪除
docker rmi nginx:1.24.0
3.導入
docker load<nginx
docker images
四、Docker容器操作
1、Docker 容器操作列表
命令 | 語法 | 參數/選項 | 說明 | 示例 |
創建容器 | docker create [OPTIONS] IMAGE [COMMAND] [ARG...] | -it:交互式終端 -p:端口映射 --name:容器命名 | 創建容器但不啟動 | docker create -it --name my_centos centos:7 |
啟動容器 | docker start [OPTIONS] CONTAINER | -a:附加到容器輸出 -i:保持輸入交互 | 啟動已創建的容器 | docker start my_centos |
創建并運行容器 | docker run [OPTIONS] IMAGE [COMMAND] [ARG...] | -d:后臺運行 -it:交互式終端 -p:端口映射 -v:掛載數據卷 | 直接創建并啟動容器 | docker run -d -p 8080:80 nginx docker run -it centos:7 /bin/bash |
列出容器 | docker ps [OPTIONS] | -a:顯示所有容器 -q:僅顯示ID -s:顯示容器大小 | 查看容器狀態和基本信息 | docker ps -a |
停止容器 | docker stop [OPTIONS] CONTAINER | -t:設置等待時間(默認10秒) | 優雅停止容器 | docker stop -t 20 my_nginx |
進入容器 | docker exec [OPTIONS] CONTAINER COMMAND [ARG...] | -it:交互式終端 -u:指定用戶 | 在運行中的容器內執行命令 | docker exec -it my_centos /bin/bash |
導出容器 | docker export CONTAINER > FILE | 將容器文件系統導出為tar文件 | docker export my_centos > centos.tar | |
導入容器為鏡像 | docker import FILE [REPOSITORY[:TAG]] | 從tar文件生成鏡像 | docker import centos.tar centos:test | |
刪除容器 | docker rm [OPTIONS] CONTAINER | -f:強制刪除運行中的容器 -v:同時刪除數據卷 | 刪除已停止的容器 | docker rm -f my_centos |
2、Docker 容器操作案例?
容器是 Docker 的另一個核心概念。簡單說,容器是鏡像的一個運行實例,是獨立運行的一個或一組應用以及它們所必需的運行環境,包括文件系統、系統類庫、she11 環境等。鏡像是只讀模板,而容器會給這個只讀模板添加一個額外的可寫層。
(1)容器的創建與啟動
1.創建容器
docker create -it centos:7
2.查看所有的容器
docker ps -a
3.容器的運行
docker start 5a
docker ps
4.利用容器執行命令(命令執行完畢后容器會退出)
docker run -d centos:7 /usr/bin/bash -c "ls /root"
5.在啟動容器時持續在后臺運行
docker run -d centos:7 /usr/bin/bash -c "while true;do echo nihao;done"
或
docker run -dit centos:7 /bin/bash
(2)容器的終止
docker stop b18
(3)進入容器
[root@localhost ~]# docker exec -it 1ca2 /bin/bash
[root@1ca2a9e95262 /]# ls
anaconda-post.log dev home lib64 mnt proc run srv tmp var
bin etc lib media opt root sbin sys usr
[root@1ca2a9e95262 /]# exit
exit
[root@localhost ~]#
(4)容器導出
docker export 1ca2 >centos77
(5)容器導入生成鏡像
docker import centos77 centos77:aaa
docker images
(6)容器刪除
docker rm 1ca2