Docker核心概念与实战指南

23 阅读3分钟

本文通过 实际操作示例 带你从 0 学会 Docker。

内容包括:

  • Docker安装
  • 镜像管理
  • 容器管理
  • 数据卷
  • Dockerfile
  • Docker Compose

一、Docker安装

1 安装Docker

curl -fsSL https://get.docker.com -o install-docker.sh
sh install-docker.sh

查看版本

docker --version

示例输出

Docker version 24.0.5, build ced0996

查看服务状态

systemctl status docker

启动docker

systemctl start docker

设置开机启动

systemctl enable docker

二、配置镜像加速

编辑配置文件

vi /etc/docker/daemon.json

添加内容

{
  "registry-mirrors":[
    "https://docker.m.daocloud.io",
    "https://docker.1panel.live",
    "https://hub.rat.dev"
  ]
}

重启docker

systemctl restart docker

三、Docker镜像管理

1 拉取镜像

下载 nginx 镜像

docker pull nginx

示例输出

Using default tag: latest
latest: Pulling from library/nginx
Digest: sha256:xxxx
Status: Downloaded newer image for nginx:latest

2 查看镜像

docker images

示例

REPOSITORY   TAG       IMAGE ID       SIZE
nginx        latest    605c77e624dd   141MB

3 删除镜像

按名称删除

docker rmi nginx

按ID删除

docker rmi 605c77e624dd

4 指定CPU架构

有些服务器需要指定架构

docker pull --platform=linux/amd64 nginx

常见架构:

linux/amd64
linux/arm64

四、Docker容器管理

1 创建并运行容器

docker run nginx

如果本地没有镜像,Docker会自动下载。


2 后台运行容器

docker run -d nginx

示例输出

a8d3c1b34f1f9b

3 查看运行中的容器

docker ps

示例

CONTAINER ID   IMAGE   STATUS
a8d3c1b34f1f   nginx   Up 10 seconds

查看所有容器

docker ps -a

4 端口映射

启动 nginx 并映射端口

docker run -d -p 80:80 nginx

访问:

http://服务器IP

就可以看到 nginx 页面。


5 指定容器名称

docker run -d \
--name mynginx \
-p 80:80 \
nginx

查看容器

docker ps

输出

CONTAINER ID   IMAGE   NAMES
xxxx           nginx   mynginx

6 停止容器

docker stop mynginx

启动容器

docker start mynginx

删除容器

docker rm mynginx

五、进入容器

进入容器终端

docker exec -it mynginx /bin/bash

如果没有 bash

docker exec -it mynginx /bin/sh

查看容器文件

ls

退出容器

exit

六、查看容器日志

查看日志

docker logs mynginx

实时日志

docker logs -f mynginx

七、数据持久化(Volume)

如果容器删除,数据会丢失。

所以需要 数据卷挂载

示例

docker run -d \
-p 80:80 \
-v /data/nginx:/usr/share/nginx/html \
nginx

解释

宿主机目录 : 容器目录

访问网页时实际读取:

/data/nginx

八、命名卷

创建卷

docker volume create nginx_data

查看卷

docker volume ls

使用卷

docker run -d \
-p 80:80 \
-v nginx_data:/usr/share/nginx/html \
nginx

查看卷信息

docker volume inspect nginx_data

九、Dockerfile 构建镜像

创建 Dockerfile

FROM nginx

WORKDIR /app

COPY . /app

RUN apt update

EXPOSE 80

CMD ["nginx","-g","daemon off;"]

构建镜像

docker build -t mynginx .

查看镜像

docker images

运行镜像

docker run -d -p 8080:80 mynginx

访问

http://服务器IP:8080

十、Docker网络

查看网络

docker network ls

示例

NETWORK ID     NAME      DRIVER
xxxx           bridge    bridge
xxxx           host      host
xxxx           none      null

创建网络

docker network create mynet

使用网络

docker run -d \
--network mynet \
--name nginx1 \
nginx

十一、Docker Compose

如果系统包含:

nginx
mysql
redis
backend

手动管理会非常复杂。

Docker Compose 可以 一键启动全部容器


docker-compose.yml

version: "3"

services:

  nginx:
    image: nginx
    ports:
      - "80:80"

  redis:
    image: redis

  mysql:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123456

启动服务

docker compose up -d

查看容器

docker ps

停止服务

docker compose down

十二、总结

Docker核心体系

镜像 Image
   ↓
容器 Container
   ↓
仓库 Registry

开发流程

Dockerfile
   ↓
docker build
   ↓
docker run
   ↓
docker compose