Docker 入门之单机常用命令总结
缘起
大部分场景,或者说大部分入门使用场景,都是单机环境下使用docker,主要用来隔离环境,节省硬件资源。
所以单机命令也就是最常用的命令了。这篇总结一下单机常用的几组命令。
命令分类
分类的方法是很多的,我采用使用场景来区分:
- 镜像管理: 静态数据
- 容器管理:动态运行实
- 资源管理: 网络与存储
镜像管理
容器镜像主要分俩类:从仓库拉取、将本地镜像推送到仓库
- 先来一组拉取镜像的命令
bash
# 拉取最新版Nginx
docker pull nginx
# 拉取指定版本(如1.21.0)
docker pull nginx:1.21.0
# 拉取私有仓库镜像
docker pull docker.1ms.run/nginx:latest
说明:
A. 第一条命令有2个默认值,这也是docker常用的:
- 当不指定仓库名的时候,默认拉取hub.docker.com
- 当不支持镜像版本(tag)的时候,默认指得是latest
B. 第二条拉取指定版本镜像
C. 拉取私有仓库的镜像------------同时也可能通过镜像(代理)拉取镜像
拉取私有仓库或者通过代理拉取其他仓库(例如中央仓库hub.docker.com)的命令表现形式是一样的。
注: 为什么要代理呢?要镜像呢?因为hub.docker.com大部分时候是连不上的......
如果嫌弃每次都要加上代理的域名,比较麻烦:
bash
# 直接拉取
docker pull nginx:latest
# 通过毫秒镜像拉取
docker pull docker.1ms.run/nginx:latest
是可以将这个镜像配置到服务中的(docker服务)
配置文件: /etc/docker/daemon.json
``{
"registry-mirrors": [
]
}
这时候默认就是从docker.1ms.run拉取了
2. 推送镜像到仓库
来一组推送命令:
```bash
docker push myapp:0.1
docker tag myapp:0.1 docker.cnb.cool/yiqiu/myapp:0.1
docker push docker.cnb.cool/yiqiu/myapp:0.1
简单说明:
- 第一条命令就是将镜像推送到默认仓库(hub.docker.com)
- 将镜像推送到私库
注意,推送到指定仓库,是无法单独指定仓库名称的,唯一的方法就是将镜像重命名,将仓库名称带入到镜像的名称中:重新tag,这就是第二条指令的作用,类似于ln -s吧
辅助命令:
推送仓库、或者从私有仓库拉取,都是要登录的,要有权限控制的,下面是登录命令,执行后会提示输入密码:
bash
docker login -u yiqiu docker.cnb.cool
如果你对自己搭建docker仓库和代理感兴趣,推荐:
容器管理
容器就是动态的概念了,就是运行中的镜像,内存中的,容器管理的就是容器的生命周期:
容器的创建、查看、监控、进入容器内部、停止、删除:
bash
# 启动一个镜像
docker run -d -p 8080:80 --name mynginx nginx
# 查看当前宿主机运行中的镜像
docker ps
docker ps -a #当前宿主机中的镜像,包含一键停止的
# 查看当前宿主机运行中的镜像的资源占用
docker stats
# 进入docker 内部的环境中
docker exec -it mynginx bash
# 停止镜像、启动镜像、重启镜像
docker stop mynginx
docker start mynginx
docker restart mynginx
# 删除镜像
docker rm mynginx
这些命令的实操:



日志的查看:
bash
# 查看my-nginx的完整日志
docker logs mynginx
# 实时跟踪日志
docker logs -f mynginx
# 查看最后100行日志
docker logs --tail 100 mynginx
资源管理
docker 的资源,必须手工管理的,只有硬盘(文件夹)和网络(端口),其他资源(cpu、内存)都可以默认系统管理的。
网络资源已经写了两篇文章说明了,这里就部多说了,关于硬盘(文件夹):
作用:将数据独立于运行中的容器,以确保当容器生命周期结束的时候,数据能保存下来
有俩方式:
- 使用docker volume 创建数据卷
由docker引擎管理,可以使用本地硬盘、NFS、NAS等
常用命令:
bash
# 创建数据卷
docker volume create myvol
# 查看
docker volume ls
# 删除
docker volume rm myvol
# 清理所有未用、匿名的数据卷
docker volume prune
实验结果:

- 使用-v参数直接映射本地文件夹
只能使用本地文件系统,但是可以宿主机可读
bash
#
mkdir ./data
docker run -it --rm -v ./data:/data alpine sh
实验结果:

清理资源
bash
# 基础清理
docker system prune
# 清理所有未使用的镜像(包括未打标签的)
docker system prune -a
# 清理所有未使用的镜像、容器、网络和数据卷(慎用!)
docker system prune -a --volumes
小结
常用命令表格:
速查表:新手必备,收藏备用!
| 功能 | 核心命令 | 用例 |
|---|---|---|
| 拉取镜像 | docker pull <镜像> |
docker pull nginx |
| 查看镜像 | docker images |
docker images |
| 启动容器 | docker run -d -p 80:80 --name <name> <image> |
docker run -d -p 8080:80 --name my-nginx nginx |
| 查看容器 | docker ps -a |
docker ps -a |
| 进入容器 | docker exec -it <name> /bin/bash |
docker exec -it my-nginx /bin/bash |
| 查看日志 | docker logs -f <name> |
docker logs -f my-nginx |
| 停止容器 | docker stop <name> |
docker stop my-nginx |
| 删除容器 | docker rm <name> |
docker rm my-nginx |
| 清理环境 | docker system prune -a |
docker system prune -a |