Docker入门篇--从安装到使用

一、Docker 基础知识
(一)Docker 是什么
-
定义 :Docker 是一个开源的应用容器引擎(容器的管理工具),是目前应用范围最广的容器引擎之一。
-
容器引擎 : Docker、 podman、containerd 等,docker 是目前市面上应用范围最广的一种容器引擎,以易用性和丰富的生态系统受到广泛青睐。
(二)容器的概念
容器是一种轻量级的虚拟化技术,由应用运行环境、容器基础镜像组成。
(三)Docker 与容器的关系
Docker 是实现容器的工具,即容器引擎,利用它可创建、部署和运行容器,驱动容器运行。
(四)容器与虚拟机的对比
对比维度 | 容器 | 虚拟机 |
---|---|---|
启动速度 | 快,只需打包操作系统基础文件、库文件及应用程序和依赖 | 慢,需加载完整的操作系统包括内核 |
运行性能 | 接近原生,直接运行在物理操作系统上 | 有损失,因虚拟化层虚拟硬件产生开销 |
磁盘占用 | MB 级别,仅含系统启动必要组件和程序依赖 | GB 级别,是完整的操作系统 |
数量 | 同样服务器资源可运行更多容器 | 运行数量受限于资源开销 |
隔离性 | 进程级别隔离,多个容器共用宿主机操作系统内核,隔离不彻底 | 操作系统级别隔离,隔离性更好 |
封装速度 | 快,只需封装基础文件、库文件等 | 慢,需包含整个操作系统 |
二、Docker 的安装(以 Ubuntu 系统为例)
(一)安装前提
-
更新系统
-
sudo apt update
-
sudo apt upgrade -y
-
-
确认 Ubuntu 版本
-
lsb_release -a
-
-
安装必要依赖
-
sudo apt install apt-transport-https ca-certificates curl software-properties-common
-
(二)添加 Docker 官方 GPG 密钥及配置源
-
添加 GPG 密钥
-
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
-
-
在安装密钥出现错误时:
-
wget https://download.docker.com/linux/ubuntu/gpg -O docker.gpg
-
sudo mv docker.gpg /usr/share/keyrings/docker-archive-keyring.gpg
-
(三)安装 Docker CE
-
更新 APT 包索引
-
sudo apt update
-
-
安装 Docker CE
-
sudo apt install docker-ce
-
-
安装失败的解决方法(可选阿里云镜像源)
-
安装阿里云 GPG 证书
-
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
-
-
添加阿里云 Docker 源
-
cd /etc/apt/sources.list.d
-
sudo touch docker.list
-
sudo chmod 666 docker.list
-
sudo echo "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" > docker.list
-
-
更新软件源并升级
-
sudo apt-get update && sudo apt-get upgrade
-
-
安装最新 Docker
-
sudo apt install docker-ce docker-ce-cli containerd.io
-
- 查看docker状态
systemctl status docker
-
(四)Docker 安装后的操作
-
验证安装成功
-
sudo systemctl status docker
-
-
启用 Docker 服务(开机自启)
-
sudo systemctl enable docker
-
手动启动:
sudo systemctl start docker
-
查看服务状态是否为 enabled (设置成功):
sudo systemctl is-enabled docker
-
-
卸载 Docker
-
sudo apt remove docker-ce
-
sudo apt purge docker-ce
-
sudo rm -rf /var/lib/docker
-
三、Docker 容器的基本操作
(一)查看容器
-
查看正在运行的容器 :
docker ps
-
查看所有状态的容器 :
docker ps -a
显示字段 | 说明 |
---|---|
CONTAINER ID | 容器的唯一标识符(ID) |
IMAGE | 容器所使用的镜像 |
COMMAND | 启动容器时执行的命令 |
CREATED | 容器的创建时间 |
STATUS | 容器的当前状态(如运行中、已停止等) |
PORTS | 容器的端口映射信息 |
NAMES | 容器的名称(通常由系统自动生成) |
(二)其他常用命令
操作命令 | 说明 |
---|---|
docker images | 查看本地已有的镜像 |
docker rm -f [容器 ID 或名称] | 删除容器 |
docker exec -it [容器名] bash | 进入容器(打开容器终端界面) |
docker rmi [镜像 ID] | 删除镜像 |
netstat -lnt | 查看端口 |
hostname -I | 查看服务器 IP |
docker restart [容器 id 或名称] | 重启容器 |
docker stop [容器 id] | 停止依赖该镜像的容器 |
docker start [容器名或 id] | 启动容器 |
四、容器内数据持久化存储
- 通过目录挂载实现,命令示例 :
docker run -it --name nginx_test -p 8080:80 -v /data/nginx:/opt/nginx/html nginx
-
原理 :容器启动时,通过 -v 参数将 Docker 主机上的目录挂载到容器里,建立宿主机目录与容器目录的映射关系,使容器内数据可持久化存储在宿主机上。
五、Docker 镜像的创建
(一)使用 Dockerfile 创建
- Dockerfile 文件:用于创建镜像
Dockerfile 文件内容及指令说明 | 作用 |
---|---|
FROM | 拉取基础镜像 |
LABEL | 设置作者信息 |
WORKDIR | 设置工作目录 |
ADD | 将安装包传到工作目录 |
COPY | 复制代码到工作目录 |
RUN | 安装依赖 |
CMD | 指定启动镜像时运行的默认命令 |
- 构建镜像命令 :
docker build -t [镜像名称] [Dockerfile 所在目录]
,其中 -t 指定镜像名称。
六、Docker-compose 介绍
(一)是什么
Docker-compose 是一个容器编排工具,能在单台 Linux 服务器上运行多个 Docker 容器,通过 YAML 文件(默认名称 docker-compose.yml)配置所有需运行的 Docker 容器。
(二)安装
-
安装命令(以下几种方式可选)
-
sudo curl -L "https://github.com/docker/compose/releases/download/2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.6.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
-
-
授权
-
chmod +x /usr/local/bin/docker-compose
-
-
创建软链(若在任意目录输入 docker-compose 提示找不到命令时执行)
-
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
-
-
查看版本
-
docker-compose -v
-
(三)使用
-
创建 docker-compose.yml 文件
-
以 vi 编辑器为例 :
vi docker-compose.yml
-
字段名 | 说明 |
---|---|
version | 指定 Compose 文件版本 |
services | 定义要启动的服务 |
nginx、redis | 服务名称,代表容器 |
image | 指定服务使用的镜像 |
container_name | 指定容器的名称 |
ports | 映射宿主机与容器的端口 |
volume | 挂载数据的宿主机目录 |
networks | 定义网络 |
hosti-network | 创建网络的名称 |
config | 指定网站的配置 |
-
运行
-
在 docker-compose.yml 文件所在目录执行 :
docker-compose up -d
,其中 up 表示运行,-d 表示后台运行。
-
-
其他操作命令
-
查看运行中的容器(需在 docker-compose.yml 文件头目录下):
docker-compose ps
-
停止容器而不删除 :
docker-compose stop
-
停止并删除正在运行的容器 :
docker-compose down
-
启动容器 :
docker-compose start
-
重启容器 :
docker-compose restart
-
卸载 :
sudo rm /usr/local/bin/docker-compose
-