Ubuntu20.04上安裝docker步驟及docker使用方法
查看本機(jī)系統(tǒng)
lsb_release -a
安裝步驟
1.卸載舊版本
sudo apt-get remove docker docker-engine docker.io
2.更新系統(tǒng)包索引
sudo apt-get update
3.安裝必要工具包、依賴包
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
4.為了確認(rèn)所下載軟件包的合法性,需要添加軟件源的 GPG 密鑰
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
5.向 sources.list 中添加 Docker 軟件源
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
6.更新 apt 軟件包緩存,并安裝 docker-ce
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
7.將當(dāng)前用戶加入 docker 組
# 1. 創(chuàng)建 docker 組(如果不存在) sudo groupadd docker # 2. 將當(dāng)前用戶加入 docker 組 sudo usermod -aG docker $USER # 3. 重新登錄或重啟終端使組權(quán)限生效 newgrp docker # 或者直接退出終端重新登錄 # 4. 驗(yàn)證是否成功 docker ps # 應(yīng)該能正常運(yùn)行了
8.查看docker是否安裝成功,如果是普通用戶有些指令可能沒(méi)有權(quán)限,可以將當(dāng)前用戶添加到 Docker 組
docker -v docker info # 將當(dāng)前用戶添加到 Docker 組 sudo usermod -aG docker ubuntu newgrp docker groups ubuntu
9.配置鏡像加速器
# 輸入docker run --rm hello-world有時(shí)會(huì)報(bào)超時(shí),需要配置鏡像加速器
sudo mkdir -p /etc/docker
echo '{
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com",
"https://dockerproxy.com",
"https://ccr.ccs.tencentyun.com",
"https://registry.cn-hangzhou.aliyuncs.com"
]
}' | sudo tee /etc/docker/daemon.json
sudo systemctl daemon-reload
sudo systemctl restart dockerdocker中的容器和鏡像區(qū)別
Docker 鏡像
Docker 鏡像是只讀模板,其中包含創(chuàng)建 Docker 容器所需的所有文件和代碼。它本質(zhì)上是一個(gè)可執(zhí)行包,其中包含以下內(nèi)容:
- 操作系統(tǒng)基礎(chǔ)鏡像(例如,Ubuntu、Alpine Linux)
- 應(yīng)用程序代碼和依賴項(xiàng)
- 配置文件
- 啟動(dòng)命令
Docker 鏡像是不可變的,這意味著一旦創(chuàng)建就不能修改。這確保了容器的一致性和可重復(fù)性。
Docker 容器
Docker 容器是使用 Docker 鏡像運(yùn)行的實(shí)例。它是隔離的、輕量級(jí)的執(zhí)行環(huán)境,擁有自己的文件系統(tǒng)、網(wǎng)絡(luò)和進(jìn)程。容器可以讀寫(xiě),并可以根據(jù)需要進(jìn)行修改。
當(dāng)啟動(dòng)容器時(shí),Docker 會(huì)從鏡像創(chuàng)建一個(gè)新的文件系統(tǒng)層。該層包含容器對(duì)鏡像所做的所有更改。這允許容器具有自己的唯一狀態(tài),而不會(huì)影響基礎(chǔ)鏡像。
| 特性 | Docker 鏡像 | Docker 容器 |
|---|---|---|
| 類型 | 模板 | 運(yùn)行實(shí)例 |
| 可變性 | 不可變 | 可變 |
| 目的 | 創(chuàng)建容器 | 運(yùn)行應(yīng)用程序 |
| 狀態(tài) | 只讀 | 讀寫(xiě) |
| 文件系統(tǒng) | 只有一層 | 多層(基礎(chǔ)鏡像層 + 容器層) |
Docker 鏡像用于創(chuàng)建和分發(fā)可移植、一致的應(yīng)用程序。它們可以存儲(chǔ)在 Docker 注冊(cè)表中并根據(jù)需要進(jìn)行拉取和部署。
Docker 容器用于運(yùn)行應(yīng)用程序和服務(wù)。它們提供了隔離的、輕量級(jí)的執(zhí)行環(huán)境,可以輕松地創(chuàng)建、管理和擴(kuò)展。
Docker 鏡像和 Docker 容器是 Docker 生態(tài)系統(tǒng)中互補(bǔ)的組件。鏡像是創(chuàng)建容器的模板,而容器是使用鏡像運(yùn)行的實(shí)例。
docker常用命令
1.服務(wù)相關(guān)命令
#啟動(dòng)docker服務(wù) sudo systemctl start docker #停止docker服務(wù) sudo systemctl stop docker #重啟docker服務(wù) sudo systemctl restart docker #查看docker服務(wù)狀態(tài) sudo systemctl status docker #設(shè)置開(kāi)機(jī)啟動(dòng)docker服務(wù) sudo systemctl enable docker
2.鏡像相關(guān)命令
#查看鏡像:查看本地所有的鏡像 docker images # 查看所用鏡像的id docker images -q #搜索鏡像:從網(wǎng)絡(luò)中查找需要的鏡像 docker search 鏡像名稱 #拉取鏡像:從docker倉(cāng)庫(kù)下載鏡像到本地,鏡像名稱格式為名稱:版本號(hào),如果版本號(hào)不指定則是最新的版本。 #如果不知道鏡像版本,可以去 docker hub搜索對(duì)應(yīng)鏡像查看。 docker pull 鏡像名稱 #拉取指定CPU架構(gòu)并且指定ubuntu版本的docker: # aarch64 (arm v8) CPU架構(gòu): docker pull --platform=linux/aarch64 ubuntu:22.04 # x86_64 CPU架構(gòu): docker pull --platform=linux/x86_64 ubuntu:22.04 #查看鏡像的架構(gòu): docker image inspect ubuntu:22.04 | grep Architecture # "Architecture": "arm64", #刪除鏡像:刪除本地鏡像 #刪除指定本地鏡像 docker rmi 鏡像id #刪除所有本地鏡像 docker rmi `docker images -q`
3.容器相關(guān)命令
#查看容器 #查看正在運(yùn)行的容器 docker ps #查看所有容器 docker ps -a
創(chuàng)建docker鏡像和容器
1.在vscode中安裝 Docker 擴(kuò)展
2.創(chuàng)建 Docker 鏡像
創(chuàng)建 Dockerfile
# 示例 Dockerfile FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["npm", "start"]
構(gòu)建鏡像
docker build -t my-app:latest .
3.從鏡像運(yùn)行容器
#在 Docker 擴(kuò)展側(cè)邊欄 #右鍵鏡像 → "Run" #或終端執(zhí)行: docker run -d -p 3000:3000 --name my-container my-app
概念總結(jié)
1.鏡像 vs 容器
鏡像:只讀模板,包含應(yīng)用和運(yùn)行環(huán)境
容器:鏡像的運(yùn)行實(shí)例,有可寫(xiě)層
2.Docker 命令對(duì)應(yīng)關(guān)系
構(gòu)建: docker build → Dockerfile 運(yùn)行: docker run → 容器實(shí)例 編排: docker-compose → docker-compose.yml 開(kāi)發(fā): Dev Containers → devcontainer.json
3.VSCode 集成流程
1. 編寫(xiě)代碼 → 2. 配置 Dockerfile → 3. 構(gòu)建鏡像 4. 運(yùn)行容器 → 5. 調(diào)試/測(cè)試 → 6. 提交鏡像
常用命令
1.鏡像操作
# 查看本地鏡像 docker images docker image ls docker images -a # 顯示所有鏡像(包括中間層) docker images --digests # 顯示摘要信息 docker images --no-trunc # 顯示完整鏡像ID # 搜索 Docker Hub 鏡像 docker search nginx docker search nginx --filter=stars=100 # 星數(shù)篩選 docker search nginx --limit 5 # 限制結(jié)果數(shù)量 # 拉取鏡像 docker pull nginx docker pull nginx:1.21-alpine # 指定標(biāo)簽 docker pull ubuntu:20.04 # 指定版本 docker pull nginx@sha256:... # 根據(jù)摘要拉取 # 刪除鏡像 docker rmi nginx:latest docker rmi image_id # 根據(jù)ID刪除 docker rmi $(docker images -q) # 刪除所有鏡像 docker image prune # 刪除懸空鏡像 docker image prune -a # 刪除所有未使用鏡像 # 鏡像標(biāo)簽 docker tag nginx:latest mynginx:v1 docker tag image_id new_name:tag # 根據(jù)ID打標(biāo)簽 # 保存和加載鏡像 docker save -o nginx.tar nginx:latest # 保存為tar文件 docker load -i nginx.tar # 從tar文件加載 # 查看鏡像歷史 docker history nginx:latest docker history --no-trunc nginx:latest # 顯示完整命令
2.鏡像構(gòu)建
# 構(gòu)建鏡像 docker build . docker build -t myapp:latest . # 指定標(biāo)簽 docker build -t myapp:v1 -t myapp:latest . # 多個(gè)標(biāo)簽 docker build -f Dockerfile.dev . # 指定Dockerfile docker build --no-cache . # 不使用緩存 # 構(gòu)建參數(shù) docker build --build-arg NODE_ENV=production . docker build --progress=plain . # 顯示詳細(xì)進(jìn)度 docker build --pull . # 總是拉取最新基礎(chǔ)鏡像
3.容器生命周期
# 運(yùn)行容器 docker run nginx docker run -d nginx # 后臺(tái)運(yùn)行 docker run --name mynginx nginx # 指定名稱 docker run --rm nginx # 退出后自動(dòng)刪除 docker run -it nginx bash # 交互式終端 docker run -p 8080:80 nginx # 端口映射 # 常用運(yùn)行選項(xiàng) docker run -e NODE_ENV=production nginx # 環(huán)境變量 docker run -v /host/path:/container/path nginx # 掛載卷 docker run --network mynetwork nginx # 指定網(wǎng)絡(luò) docker run --memory="512m" nginx # 內(nèi)存限制 docker run --cpus="1.5" nginx # CPU限制 # 啟動(dòng)/停止/重啟 docker start container_name docker stop container_name docker stop -t 30 container_name # 指定停止超時(shí)時(shí)間 docker restart container_name docker pause container_name # 暫停容器 docker unpause container_name # 恢復(fù)容器 # 刪除容器 docker rm container_name docker rm -f container_name # 強(qiáng)制刪除運(yùn)行中的容器 docker rm $(docker ps -aq) # 刪除所有停止的容器 docker container prune # 刪除所有停止的容器
4.容器查看和監(jiān)控
# 查看容器
docker ps # 運(yùn)行中的容器
docker ps -a # 所有容器
docker ps -l # 最后一個(gè)創(chuàng)建的容器
docker ps -n 5 # 最近創(chuàng)建的5個(gè)容器
docker ps -q # 只顯示容器ID
docker ps -f "status=running" # 過(guò)濾器
docker ps -f "name=my" # 名稱過(guò)濾
docker ps --format "table {{.Names}}\t{{.Status}}" # 自定義格式
# 容器詳情
docker inspect container_name
docker inspect -f '{{.NetworkSettings.IPAddress}}' container_name # 獲取特定信息
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
# 容器資源使用
docker stats
docker stats container_name # 特定容器
docker stats --no-stream # 單次統(tǒng)計(jì)
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
# 容器進(jìn)程
docker top container_name # 查看容器內(nèi)進(jìn)程
docker exec container_name ps aux # 執(zhí)行命令查看5.容器交互
# 進(jìn)入容器 docker exec -it container_name bash docker exec -it container_name sh docker exec -it container_name /bin/bash docker exec -u root container_name bash # 指定用戶 # 執(zhí)行命令 docker exec container_name ls -la docker exec -d container_name touch /tmp/test # 后臺(tái)執(zhí)行 # 容器日志 docker logs container_name docker logs -f container_name # 實(shí)時(shí)跟蹤 docker logs --tail 50 container_name # 最后50行 docker logs -t container_name # 顯示時(shí)間戳 docker logs --since 1h container_name # 最近1小時(shí) docker logs --until 1h container_name # 到1小時(shí)前 # 文件操作 docker cp container_name:/path/to/file /host/path # 從容器復(fù)制到主機(jī) docker cp /host/path container_name:/path # 從主機(jī)復(fù)制到容器
6.系統(tǒng)管理命令
# Docker 信息 docker info docker version docker system info # 磁盤(pán)使用 docker system df docker system df -v # 詳細(xì)磁盤(pán)使用 # 事件查看 docker events docker events --filter 'type=container' --since '2024-01-01' # 清理未使用資源 docker system prune docker system prune -a # 清理所有未使用資源 docker system prune --volumes # 包括卷 # 具體清理 docker container prune # 清理停止的容器 docker image prune # 清理懸空鏡像 docker volume prune # 清理未使用的卷 docker network prune # 清理未使用的網(wǎng)絡(luò) # 構(gòu)建緩存清理 docker builder prune docker builder prune --all
7.鏡像檢查
# 檢查鏡像層 docker history myapp:latest # 查看鏡像內(nèi)容 docker run --rm -it myapp:latest ls -la / # 鏡像安全掃描 docker scan myapp:latest
總結(jié)
到此這篇關(guān)于Ubuntu20.04上安裝docker步驟及docker使用方法的文章就介紹到這了,更多相關(guān)Ubuntu20.04安裝docker及使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決docker網(wǎng)絡(luò)錯(cuò)誤(network bridge not found)
這篇文章主要介紹了解決docker網(wǎng)絡(luò)錯(cuò)誤(network bridge not found)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
給debian的docker容器添加crontab定時(shí)任務(wù)
這篇文章主要介紹了給debian的docker容器添加crontab定時(shí)任務(wù)的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
輕量級(jí)對(duì)象存儲(chǔ)服務(wù)minio安裝及瀏覽器使用教程
本次介紹了minio的安裝及瀏覽器中的簡(jiǎn)單使用,對(duì)輕量級(jí)對(duì)象存儲(chǔ)服務(wù)minio安裝及使用教程感興趣的朋友一起看看吧2021-10-10
docker安裝jenkins的過(guò)程并配置jdk、node和maven
本文介紹了如何從拉取Jenkins鏡像開(kāi)始,通過(guò)創(chuàng)建文件夾、準(zhǔn)備JDK、Maven和Node環(huán)境,修改settings.xml支持http協(xié)議,到建立Dockerfile進(jìn)行Jenkins鏡像的二次打包,同時(shí)涉及容器的運(yùn)行、Jenkins初始化設(shè)置、插件安裝和環(huán)境變量配置等步驟,幫助用戶成功部署并運(yùn)行Jenkins服務(wù)2024-10-10
zabbix監(jiān)控docker容器狀態(tài)【推薦】
這篇文章主要介紹了zabbix監(jiān)控docker容器狀態(tài)的相關(guān)資料,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
如何通過(guò)Jenkins定期清理為None的鏡像詳解
這篇文章主要給大家介紹了關(guān)于如何通過(guò)Jenkins定期清理為None的鏡像的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11
Docker attach 命令卡死的問(wèn)題及解決方案
Docker 是一種輕量級(jí)的容器化平臺(tái),可以實(shí)現(xiàn)快速部署、運(yùn)行和管理應(yīng)用程序,這篇文章給大家介紹Docker attach 命令卡死的解決方案,感興趣的朋友一起看看吧2023-12-12
docker+daocloud實(shí)現(xiàn)前端項(xiàng)目自動(dòng)構(gòu)建部署
這篇文章主要介紹了docker+daocloud實(shí)現(xiàn)前端項(xiàng)目自動(dòng)構(gòu)建部署,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

