本文通过 实际操作示例 带你从 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