Ubuntu20.04上安装docker步骤及docker使用方法
作者:SALUTE18
查看本机系统
lsb_release -a
安装步骤
1.卸载旧版本
sudo apt-get remove docker docker-engine docker.io
2.更新系统包索引
sudo apt-get update
3.安装必要工具包、依赖包
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
4.为了确认所下载软件包的合法性,需要添加软件源的 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.将当前用户加入 docker 组
# 1. 创建 docker 组(如果不存在) sudo groupadd docker # 2. 将当前用户加入 docker 组 sudo usermod -aG docker $USER # 3. 重新登录或重启终端使组权限生效 newgrp docker # 或者直接退出终端重新登录 # 4. 验证是否成功 docker ps # 应该能正常运行了
8.查看docker是否安装成功,如果是普通用户有些指令可能没有权限,可以将当前用户添加到 Docker 组
docker -v docker info # 将当前用户添加到 Docker 组 sudo usermod -aG docker ubuntu newgrp docker groups ubuntu
9.配置镜像加速器
# 输入docker run --rm hello-world有时会报超时,需要配置镜像加速器
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中的容器和镜像区别
Docker 镜像
Docker 镜像是只读模板,其中包含创建 Docker 容器所需的所有文件和代码。它本质上是一个可执行包,其中包含以下内容:
- 操作系统基础镜像(例如,Ubuntu、Alpine Linux)
- 应用程序代码和依赖项
- 配置文件
- 启动命令
Docker 镜像是不可变的,这意味着一旦创建就不能修改。这确保了容器的一致性和可重复性。
Docker 容器
Docker 容器是使用 Docker 镜像运行的实例。它是隔离的、轻量级的执行环境,拥有自己的文件系统、网络和进程。容器可以读写,并可以根据需要进行修改。
当启动容器时,Docker 会从镜像创建一个新的文件系统层。该层包含容器对镜像所做的所有更改。这允许容器具有自己的唯一状态,而不会影响基础镜像。
| 特性 | Docker 镜像 | Docker 容器 |
|---|---|---|
| 类型 | 模板 | 运行实例 |
| 可变性 | 不可变 | 可变 |
| 目的 | 创建容器 | 运行应用程序 |
| 状态 | 只读 | 读写 |
| 文件系统 | 只有一层 | 多层(基础镜像层 + 容器层) |
Docker 镜像用于创建和分发可移植、一致的应用程序。它们可以存储在 Docker 注册表中并根据需要进行拉取和部署。
Docker 容器用于运行应用程序和服务。它们提供了隔离的、轻量级的执行环境,可以轻松地创建、管理和扩展。
Docker 镜像和 Docker 容器是 Docker 生态系统中互补的组件。镜像是创建容器的模板,而容器是使用镜像运行的实例。
docker常用命令
1.服务相关命令
#启动docker服务 sudo systemctl start docker #停止docker服务 sudo systemctl stop docker #重启docker服务 sudo systemctl restart docker #查看docker服务状态 sudo systemctl status docker #设置开机启动docker服务 sudo systemctl enable docker
2.镜像相关命令
#查看镜像:查看本地所有的镜像 docker images # 查看所用镜像的id docker images -q #搜索镜像:从网络中查找需要的镜像 docker search 镜像名称 #拉取镜像:从docker仓库下载镜像到本地,镜像名称格式为名称:版本号,如果版本号不指定则是最新的版本。 #如果不知道镜像版本,可以去 docker hub搜索对应镜像查看。 docker pull 镜像名称 #拉取指定CPU架构并且指定ubuntu版本的docker: # aarch64 (arm v8) CPU架构: docker pull --platform=linux/aarch64 ubuntu:22.04 # x86_64 CPU架构: docker pull --platform=linux/x86_64 ubuntu:22.04 #查看镜像的架构: docker image inspect ubuntu:22.04 | grep Architecture # "Architecture": "arm64", #删除镜像:删除本地镜像 #删除指定本地镜像 docker rmi 镜像id #删除所有本地镜像 docker rmi `docker images -q`
3.容器相关命令
#查看容器 #查看正在运行的容器 docker ps #查看所有容器 docker ps -a
创建docker镜像和容器
1.在vscode中安装 Docker 扩展
2.创建 Docker 镜像
创建 Dockerfile
# 示例 Dockerfile FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["npm", "start"]
构建镜像
docker build -t my-app:latest .
3.从镜像运行容器
#在 Docker 扩展侧边栏 #右键镜像 → "Run" #或终端执行: docker run -d -p 3000:3000 --name my-container my-app
概念总结
1.镜像 vs 容器
镜像:只读模板,包含应用和运行环境
容器:镜像的运行实例,有可写层
2.Docker 命令对应关系
构建: docker build → Dockerfile 运行: docker run → 容器实例 编排: docker-compose → docker-compose.yml 开发: Dev Containers → devcontainer.json
3.VSCode 集成流程
1. 编写代码 → 2. 配置 Dockerfile → 3. 构建镜像 4. 运行容器 → 5. 调试/测试 → 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 # 星数筛选 docker search nginx --limit 5 # 限制结果数量 # 拉取镜像 docker pull nginx docker pull nginx:1.21-alpine # 指定标签 docker pull ubuntu:20.04 # 指定版本 docker pull nginx@sha256:... # 根据摘要拉取 # 删除镜像 docker rmi nginx:latest docker rmi image_id # 根据ID删除 docker rmi $(docker images -q) # 删除所有镜像 docker image prune # 删除悬空镜像 docker image prune -a # 删除所有未使用镜像 # 镜像标签 docker tag nginx:latest mynginx:v1 docker tag image_id new_name:tag # 根据ID打标签 # 保存和加载镜像 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.镜像构建
# 构建镜像 docker build . docker build -t myapp:latest . # 指定标签 docker build -t myapp:v1 -t myapp:latest . # 多个标签 docker build -f Dockerfile.dev . # 指定Dockerfile docker build --no-cache . # 不使用缓存 # 构建参数 docker build --build-arg NODE_ENV=production . docker build --progress=plain . # 显示详细进度 docker build --pull . # 总是拉取最新基础镜像
3.容器生命周期
# 运行容器 docker run nginx docker run -d nginx # 后台运行 docker run --name mynginx nginx # 指定名称 docker run --rm nginx # 退出后自动删除 docker run -it nginx bash # 交互式终端 docker run -p 8080:80 nginx # 端口映射 # 常用运行选项 docker run -e NODE_ENV=production nginx # 环境变量 docker run -v /host/path:/container/path nginx # 挂载卷 docker run --network mynetwork nginx # 指定网络 docker run --memory="512m" nginx # 内存限制 docker run --cpus="1.5" nginx # CPU限制 # 启动/停止/重启 docker start container_name docker stop container_name docker stop -t 30 container_name # 指定停止超时时间 docker restart container_name docker pause container_name # 暂停容器 docker unpause container_name # 恢复容器 # 删除容器 docker rm container_name docker rm -f container_name # 强制删除运行中的容器 docker rm $(docker ps -aq) # 删除所有停止的容器 docker container prune # 删除所有停止的容器
4.容器查看和监控
# 查看容器
docker ps # 运行中的容器
docker ps -a # 所有容器
docker ps -l # 最后一个创建的容器
docker ps -n 5 # 最近创建的5个容器
docker ps -q # 只显示容器ID
docker ps -f "status=running" # 过滤器
docker ps -f "name=my" # 名称过滤
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 # 单次统计
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
# 容器进程
docker top container_name # 查看容器内进程
docker exec container_name ps aux # 执行命令查看5.容器交互
# 进入容器 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 # 指定用户 # 执行命令 docker exec container_name ls -la docker exec -d container_name touch /tmp/test # 后台执行 # 容器日志 docker logs container_name docker logs -f container_name # 实时跟踪 docker logs --tail 50 container_name # 最后50行 docker logs -t container_name # 显示时间戳 docker logs --since 1h container_name # 最近1小时 docker logs --until 1h container_name # 到1小时前 # 文件操作 docker cp container_name:/path/to/file /host/path # 从容器复制到主机 docker cp /host/path container_name:/path # 从主机复制到容器
6.系统管理命令
# Docker 信息 docker info docker version docker system info # 磁盘使用 docker system df docker system df -v # 详细磁盘使用 # 事件查看 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 # 清理未使用的网络 # 构建缓存清理 docker builder prune docker builder prune --all
7.镜像检查
# 检查镜像层 docker history myapp:latest # 查看镜像内容 docker run --rm -it myapp:latest ls -la / # 镜像安全扫描 docker scan myapp:latest
总结
到此这篇关于Ubuntu20.04上安装docker步骤及docker使用方法的文章就介绍到这了,更多相关Ubuntu20.04安装docker及使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
