本文通过 实际操作示例 带你从 0 学会 Docker。
内容包括:
- Docker安装
- 镜像管理
- 容器管理
- 数据卷
- Dockerfile
- Docker Compose
一、Docker安装
1 安装Docker
bash
curl -fsSL https://get.docker.com -o install-docker.sh
sh install-docker.sh
查看版本
css
docker --version
示例输出
Docker version 24.0.5, build ced0996
查看服务状态
lua
systemctl status docker
启动docker
sql
systemctl start docker
设置开机启动
bash
systemctl enable docker
二、配置镜像加速
编辑配置文件
bash
vi /etc/docker/daemon.json
添加内容
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
示例输出
vbnet
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架构
有些服务器需要指定架构
ini
docker pull --platform=linux/amd64 nginx
常见架构:
bash
linux/amd64
linux/arm64
四、Docker容器管理
1 创建并运行容器
arduino
docker run nginx
如果本地没有镜像,Docker会自动下载。
2 后台运行容器
arduino
docker run -d nginx
示例输出
a8d3c1b34f1f9b
3 查看运行中的容器
docker ps
示例
CONTAINER ID IMAGE STATUS
a8d3c1b34f1f nginx Up 10 seconds
查看所有容器
css
docker ps -a
4 端口映射
启动 nginx 并映射端口
arduino
docker run -d -p 80:80 nginx
访问:
arduino
http://服务器IP
就可以看到 nginx 页面。
5 指定容器名称
css
docker run -d \
--name mynginx \
-p 80:80 \
nginx
查看容器
docker ps
输出
CONTAINER ID IMAGE NAMES
xxxx nginx mynginx
6 停止容器
arduino
docker stop mynginx
启动容器
sql
docker start mynginx
删除容器
bash
docker rm mynginx
五、进入容器
进入容器终端
bash
docker exec -it mynginx /bin/bash
如果没有 bash
bash
docker exec -it mynginx /bin/sh
查看容器文件
bash
ls
退出容器
bash
exit
六、查看容器日志
查看日志
docker logs mynginx
实时日志
docker logs -f mynginx
七、数据持久化(Volume)
如果容器删除,数据会丢失。
所以需要 数据卷挂载。
示例
bash
docker run -d \
-p 80:80 \
-v /data/nginx:/usr/share/nginx/html \
nginx
解释
宿主机目录 : 容器目录
访问网页时实际读取:
bash
/data/nginx
八、命名卷
创建卷
lua
docker volume create nginx_data
查看卷
bash
docker volume ls
使用卷
diff
docker run -d \
-p 80:80 \
-v nginx_data:/usr/share/nginx/html \
nginx
查看卷信息
docker volume inspect nginx_data
九、Dockerfile 构建镜像
创建 Dockerfile
sql
FROM nginx
WORKDIR /app
COPY . /app
RUN apt update
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
构建镜像
erlang
docker build -t mynginx .
查看镜像
docker images
运行镜像
arduino
docker run -d -p 8080:80 mynginx
访问
arduino
http://服务器IP:8080
十、Docker网络
查看网络
bash
docker network ls
示例
sql
NETWORK ID NAME DRIVER
xxxx bridge bridge
xxxx host host
xxxx none null
创建网络
lua
docker network create mynet
使用网络
css
docker run -d \
--network mynet \
--name nginx1 \
nginx
十一、Docker Compose
如果系统包含:
nginx
mysql
redis
backend
手动管理会非常复杂。
Docker Compose 可以 一键启动全部容器。
docker-compose.yml
yaml
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
开发流程
arduino
Dockerfile
↓
docker build
↓
docker run
↓
docker compose