Docker2️⃣镜像 & 容器
1、镜像
1.1、命名规范
镜像名称:
[repository]:[tag]
-
repository:镜像仓库
-
tag:版本 【若不指定 tag,则表示最新版(latest)】
1.2、命令(❗)
命令帮助文档:
docker xxx - help
-
远程
-
push:推送镜像
-
pull:拉取镜像
docker pull 镜像名称[:版本号]
-
-
本地
- images:查看本地镜像
- rmi:删除
-
导出
-
save:导出压缩包(
.tar
)docker save -o [目标文件名称] [镜像名称]
-
load:加载镜像
docker load -i [源文件]
-
-
构建:build
1.3、case
1.3.1、搜索镜像
示例:DockerHub 最新版 Redis 镜像。
-
搜索镜像
-
查看镜像信息
1.3.2、操作镜像
命令帮助文档:
docker xxx - help
-
拉取镜像:若不指定 tag,则表示最新版(latest)
docker pull docker
-
查看本地镜像:镜像仓库,版本,镜像 ID,创建时间,大小
-
docker images
-
-
导出:如生成到 /tmp 下
docker save -o /tmp/redis.tar redis:latest
-
删除本地镜像
docker rmi redis::latest
-
导入
docker load -i /tmp/redis.tar
2、容器
2.1、状态
容器的 3 个状态
-
运行:进程正常运行。
-
暂停:进程挂起。不再分配 CPU 时间片,但不释放内存。
-
停止:进程终止。不再分配 CPU 时间片,释放内存。(仅保留磁盘文件)
2.2、状态命令(❗)
命令帮助文档:
docker xxx - help
- 创建/删除
- run:通过镜像创建一个容器并运行。
- rm:删除容器(包括磁盘文件)。
- 停止/启动
- stop:停止运行(exit)。
- start:使停止容器再次运行(相比 run,容器已创建)。
- 暂停
- pause:暂停运行。
- unpause:恢复运行。
2.2.1、run
创建并运行容器
docker run [OPTIONS] 镜像名 [指令] [参数...]
常用选项
- --name:容器名
- -p:建立宿主机和容器端口映射关系。
- 容器是一个隔离环境,因此需要配置端口号映射。
- 左侧是宿主机端口(自定义),右侧是容器端口(通常是应用的默认端口,如 MySQL-3306,Nginx-80)
- -d:后台运行
- -v:挂载数据卷(本文 3.3)
Hint:报错
IPv4 forwarding is disabled. Networking will not work
-
原因:未启用 IPv4 转发功能。
-
解决
# 添加配置 echo "net.ipv4.ip_forward=1" >> /usr/lib/sysctl.d/00-system.conf # 重启网络 systemctl restart network # 重启Docker systemctl restart docker
2.2.2、rm
删除容器(包括磁盘文件)
docker rm [OPTIONS] 容器名
- 不带选项时,只能删除非运行状态的容器。
-f
:强制删除容器,无论是否处于运行状态。
2.3、操作命令(❗)
命令帮助文档:
docker xxx - help
2.3.1、ps
查看容器
docker ps [OPTIONS]
- 不带选项时,仅列出运行中的容器。
-a
:列出所有容器。
2.3.2、logs
查看容器运行日志
docker logs [OPTIONS] 容器名
- 不带选项时,仅查看当前形成的日志。
-f
:持续输出日志(Ctrl Z 退出)。
2.3.3、exec
进入容器,执行命令
docker exec [OPTIONS] 容器名 命令
- -it:开启标准输入终端。
- 命令:进入容器后执行的命令,如 bash 表示进入 Linux CLI。
2.4、case
示例:创建并运行一个 Redis 容器,使用 Redis。
-
拉取镜像
docker pull redis
-
创建并运行容器,开启 AOF 持久化策略。
docker run --name myRedis -p 6379:6379 -d redis redis-server --appendonly yes
-
进入容器,执行
redis-cli
命令连接到 Redis 服务器。docker exec -it myRedis redis-cli
-
成功连接到 Redis 服务器后,即可正常使用 Redis。