Docker--了解及基础使用篇
Docker--了解及基础使用篇
Docker 架构:
Docker 包括三个基本概念:
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。客户端及我们用到终端命令。 服务端通常为一个守护进程。
安装
Windows
以下步骤仅限于Win10系统,其他版本没做尝试
- 首先下载Docker Desktop
- 开启Hyper-V: 控制面板>程序>启用或关闭Windows功能>Hyper-V,选中确定即可。或者通过命令
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
也可以。 - 安装WSL2
- 安装 Docker Desktop for Windows
- 输入命令
docker run hello-world
验证是否安装成功。首先发现没有镜像hello-world则会进行拉取, 然后运行容器打印"Hello from Docker!"
Linux
CentOS
一行命令解决安装:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
然后运行docker:
sudo systemctl start docker
验证安装:
sudo docker run hello-world
开启开机自启动与其他服务类似:
sudo systemctl enable docker
镜像管理
查看镜像
docker images
删除镜像
docker rmi -f 镜像名称:tag
创建容器并启动
基本语法如下:
docker run [options] image [command] [arg...]
常用option:
- -d: 后台运行
- -i: 以交互模式运行容器,即通过终端进行交互, 通常与
-t
配合使用 - -t: 用于指定容器交互的终端, 一般指定为
/bin/bash
- -p: 指定端口映射, 格式为:
宿主机端口: 容器端口
- -e: 设置环境变量, 格式为:
变量名=变量值
- --volume,-v: 挂载, 格式为:
宿主机路径:容器内路径
- --name="somename": 为容器指定一个名称
例如:
docker run -dit /bin/bash -p 6080:80 --gpus=all -e USER=ubantu -e HTTP_PASSWORD=ubantu -v E:\exchange:/dev/shm ubuntu-desktop-20.04:mod1
上述例子实例化ubuntu-desktop-20.04:mod1镜像的一个容器, 并指定为后台运行的交互式运行。 宿主端口6080映射到80, 指定了多个环境变量,指定了挂载路径。
若想启动容器不启动可参考 docker create
删除容器
docker rm -f 容器id或名称
查看容器
docker ps
查看已停止容器:
docker ps -a
启动/停止/重启容器
start/stop/restart 容器id或名称
进入正在运行的容器
docker exec -it 容器id /bin/bash
持久化容器
容器只是镜像的一个实例, 只是运行在内存中。 就好比声明类(镜像), 实例化对象(容器)一样,而持久化容器就好比类实例序列化。
在 Docker 中,有三种方式可以将容器中的文件系统保存为镜像:
docker commit
:将当前容器的文件系统保存为一个新的镜像。该镜像包含容器中的所有修改,包括新创建的文件、修改的配置等,但不包括容器的状态和元数据。
docker commit -a 作者 -m 提交说明 容器id 镜像名称:tag
docker save
:将指定的镜像及其所有依赖镜像打包成一个 tar 文件,并导出到本地文件系统。导出的 tar 文件包含完整的镜像和依赖镜像,包括镜像的元数据和状态信息。
docker save -o 指定存储到本地的文件路径 镜像名称:tag
docker export
:将当前容器的文件系统打包成一个 tar 文件,并导出到本地文件系统。导出的 tar 文件包含容器中的所有文件,但不包括容器的状态和元数据。
docker export -o 指定存储到本地的文件路径 容器id或名称
上述容器的状态和元数据通常如下:
- 运行状态:包括容器的 PID(进程 ID)、CPU 和内存使用情况、网络配置、文件系统挂载点和容器的健康状态等。
- 元数据:包括镜像的名称、版本、标签、创建时间、镜像 ID、容器的名称、ID、创建时间、启动命令、端口映射、环境变量、网络配置、容器的标签和注释等。
- 容器日志等信息
导入镜像
docker import 本地导出的文件路径 指定镜像名称:tag
其他实用命令
- 拷贝宿主机器文件到容器中
docker cp 宿主机器路径 容器id:容器中路径
- 查看容器中运行的进程
docker top
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?