1. ✅查看容器日志
docker logs
注意事项;
1.查看所有日志
2.添加选项
选项:
1.查看最后20行日志
docker logs -n 20 ngx_v1
2.查看日志的实时更新
docker logs -n 20 -f ngx_v1
3.查看最近1小时日志
docker logs -f --since "1h" ngx

2. ✅运行mysql容器
# 运行容器
docker run --name mysql8.0 -p 3306:3306 -p 33060:33060 -d mysql:8.0-debian
# 查看运行中的容器
docker ps
# 查看所有的容器
docker ps -a
# 查看容器的日志
docker logs -n 20 mysql8.0
# 运行容器时指定变量
docker rm mysql8.0
docker run --name mysql8.0 -p 3306:3306 -p 33060:33060 -e MYSQL_ROOT_PASSWORD=1 -d mysql:8.0-debian
# 查看运行中的容器
docker ps

3. ✅容器的开机自启动
3.1. 🌟容器自启动规则
默认是:no
指定容器关闭后自动启动容器: always
unless-stopped 容器关闭了,才会自动重启
no-failure 容器失败了,才会自动重启
- 容器的开机自启动规则 --restart通过docker run的时候指定
# 运行容器指定自启动规则
docker run --name mysql_v1 -p 3306:3306 -p 33060:33060 -e MYSQL_ROOT_PASSWORD=1 --restart always -d mysql:8.0-debian
# 查看容器的开机自启动规则
docker inspect mysql_v1 |jq '.[].HostConfig.RestartPolicy.Name'
# 重启docker服务
systemctl restart docker
# 查看docker是否自启动
docker ps

# 查看容器的重启规则
docker inspect mysql_v1 |jq '.[].HostConfig.RestartPolicy.Name'
# 修改mysql8.0
docker update --restart no mysql_v1
# 查看容器的重启规则
docker inspect mysql_v1 |jq '.[].HostConfig.RestartPolicy.Name'

4. ✅查看容器信息与状态
# 查看所有运行中的容器的信息
docker stats
# cpu和内存使用情况,使用率
net io (网络读写),block io(磁盘读写)情况

# 查看整体进程信息
docker top 容器名字
# 查看线程信息,选项是ps命令选项
docker top 容器 -efL
dockker top 容器 aux

5. ✅启动linux系统容器
dockker run -d --name debian_bullseye debian:bullseye
现象:直接启动系统容器发现无法启动
原因:容器启动后没有进程阻塞住这个容器
阻塞:容器中要有某个进程(命令),一致运行
解决:
docker run -itd --name debian debian:bullseye /bin/bash
其他服务
nginx -g 'daemon off;'
- docker exec vs attach(几乎不用)
- attach取消的时候结束容器
6. ✅docker端口映射
-p 宿主机端口:容器端口
-p 多个端口映射 -p -p -p
-p 8000-8002:80-82 有规律的映射,本质是 -p -p -p
-P(大写)随机映射
docker run -d --name ngx -P nginx:1.24

7. ✅docker数据卷(数据持久化)
- -v (--volume) 容器与宿主机连接上(映射)
- 数据库数据
- 配置文件(推荐自定义镜像)
1.创建数据卷目录
mkdir -p /app/mysql/data/
2.创建容器,并设置数据卷,数据卷目录没有创建时会自动创建
docker run -d --name db8.0 -p 3306:3306 -p 33060:33060 --restart always -v /app/mysql/data/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=1 mysql:8.0-debian
3.进入容器并创建数据库
docker exec -it db8.0 mysql -uroot -p1
create databases zhu01;
create databases zhu02;
create databases zhu03;

4.删除容器
docker rm db8.0 -f
5.运行容器
docker run -d --name db8.0 -p 3306:3306 -p 33060:33060 --restart always -v /app/mysql/data/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=1 mysql:8.0-debian
6.进入容器并查看数据库
docker exec -it db8.0 mysql -uroot -p1
show databases;

8. ✅自定义镜像
- 需求:官方镜像缺少配置,代码,官方镜像无法直接满足需求,通过自定义镜像方式实现
8.1. 🌟自定义小鸟飞飞镜像
bird.tar.gz
server {
listen 80;
server_name bird.zhubl.xyz;
root /app/code/bird/;
location / {
index index.html;
}
location ~* \.(html|js|css)$ {
expires 1d;
}
location ~* \.(jpg|jpeg|bmp|gif|png)$ {
expires max;
}
}

http://10.0.0.81:80

docker commit bird_nginx_1.24 web:bird_v1

docker image save web:bird_v1 |gzip >web-bird_v1.tar.gz

docker load -i web-bird_v1.tar.gz
9. ✅总结
- docker容器指令
- 端口映射,数据卷挂载
- 自定义镜像(手动commit)
