Docker的基本命令
1. 帮助启动相关
命令功能 | 命令行代码 |
---|---|
启动docker | systemctl start docker |
停止docker | systemctl stop docker |
重启docker | systemctl restart docker |
查看docker状态 | systemctl status docker |
开机启动docker | systemctl enable docker |
查看docker概要信息 | docker info |
查看docker总体帮助文档 | docker --help |
查看docker命令帮助文档 | docker save --help (查看save命令的帮助文档) |
2. 镜像相关命令
1. docker images 查看本地的镜像
其中
- repository 表示镜像名称
- Tag 表示镜像的版本标签 同一个镜像可以有多个标签
- Image Id 表示镜像的ID
- Created 表示创建时间
- Size 表示文件大小
命令功能 | 命令行代码 |
---|---|
docker images -a | 列出本地所有的镜像 |
docker images -q | 只显示镜像的ID |
2. docker search <某个镜像的名称> 搜索镜像
其中
- Name 表示镜像的名称
- Description 表示镜像的说明
- stars 点赞的数量
- Officaial 表示是否是官方的 若是官方的 下方有一个 表示
- AutoMated 表示是否是自动构建的
命令功能 | 命令行代码 |
---|---|
分页查询镜像 查询N个 | docker search <镜像名称> --limit < n > |
Docker 自动构建镜像和非自动构建镜像的主要区别在于构建方式和更新机制。
自动构建镜像是通过与代码托管平台(如 GitHub、GitLab、Bitbucket 等)集成,当代码仓库中的代码发生变化时,Docker Hub 会自动触发构建过程,生成新的镜像。自动构建镜像的好处是可以自动化构建和更新镜像,减少手动操作,提高效率。但是,由于构建过程是自动化的,可能会导致构建失败或者镜像质量不稳定的问题。
非自动构建镜像则需要手动构建和更新,通常是通过 Dockerfile 文件来定义构建过程。这种方式可以更加灵活地控制构建过程和镜像内容,但需要手动操作,相对较为繁琐。
总的来说,自动构建镜像适用于需要频繁更新的应用,非自动构建镜像适用于需要更加精细控制的应用。
3. docker pull <某个镜像的名称> 下载/拉去镜像
命令功能 | 命令行代码 |
---|---|
拉去某个镜像的最新版本 latest | docker pull < 镜像的名称 > |
拉取某个镜像的指定版本(不要忘了冒号) | docker pull <镜像的名称>:< tag ID > |
### 4. docker system df 查看镜像/容器/数据卷占用的空间
5. docker rmi <某个镜像的名字> 删除镜像
命令功能 | 命令行代码 |
---|---|
强制删除镜像 | docker rmi -f <镜像的ID> |
删除多个镜像 | docker rmi -f <镜像的ID>:<镜像ID> |
删除全部镜像 | docker rmi -f ${docker images -qa} |
其中删除全部中使用到的是Shell脚本的特性,支持了参数的续传,可以将docker images -qa查询到的所有的镜像的ID传输给docker rmi -f执行,即就可以删除全部
* Docker面试题:谈谈docker虚旋镜像是什么?
1. 虚旋镜像长什么样子?
在查询所有镜像仓库的时候可以看到的他 repository和TAG是< none >
## 3.容器相关的命令
1. 启动一个容器实例
命令功能 | 命令行代码 |
---|---|
启动一个容器,如启动一个nginx其中 -d表示后台运行这个容器,不占用前台的输入 | docker run --name < 自定义这个容器的名字 > -d <镜像名称> |
如,要启动一个Nginx容器,并且取名为MyNginx,且让他后台运行,不占用前台命令行,就有如下命令行
docker run --name Mynginx -d nginx
##
## 其中 --name 表示指定一个名称 后面是自定义的名称
## -d 表示后台运行
## 最后是启动的这个镜像的名称
2. 查询当前正在运行的容器
命令功能 | 命令行代码 |
---|---|
查询当前正在运行的容器 | docker ps |
查询罗列过的和运行过的所有容器 | docker ps -a |
查询最近创建的容器 | docker ps -l |
查询最近N个创建的容器 | docker ps -n <查询的数量> |
查询正在运行的容器的ID | docker ps -q |
其中
docker ps -q查询当前正在运行的容器的ID可以和其他命令参数进行组合使用,如我们要查询所有运行过的容器就可以有如下的代码
docker ps -aq
3. 退出当前容器
命令功能 | 命令行代码 |
---|---|
退出当前容器 | exit “使用这个命令退出容器会停止当前容器的运行” |
退出当前容器 | ctrl + p + q "使用这个命令退出容器不会停止容器的运行" |
4. 启动/停止/强制停止的容器
命令功能 | 命令行代码 |
---|---|
启动容器 | docker start <容器的ID> |
停止容器 | docker stop <容器的ID> |
强制停止容器 | docker kill <容器的ID> |
5. 删除已经停止容器
在上面的例子中已经学到了删除镜像使用的命令是 docker rmi <镜像的ID>
在删除容器的时候,命令就是
docker rm <容器的ID>
# 强制删除容器 慎用 可以删除正在运行的容器
dcker rm -f <容器的ID>
注意: 容器保护机制让docker 只可以删除已经停止的镜像
6. 查看容器启动的日志
命令功能 | 命令行代码 |
---|---|
查看容器日志 | docker logs <容器的ID> |
4. 交互式启动
1. 什么是交互式启动?
交互式启动如字面意思,有交互的启动,具体理解起来可以有如下例子:
现在我们在docker 中创建了一个ubantu容器,因为Ubantu是Linux系统,这个Linux系统是有交互的,我们启动的时候可以使用如下命令docker run -it -name linux1 ubuntu
我们可以直接进入到这个系统中,并产生了一个交互式控制台输入,这个时候可以调用我们的linux命令进行操作这个容器,这就是交互
思考?
若我们退出的时候,应该如何再次进入,并产生交互控制台呢?
这个时候就使用到了交互式启动运行
命令功能 | 命令代码 |
---|---|
创建容器的时候并返回一个交互控制台 | docker run -it --name<自定义容器的名称> <要启动的镜像名称> |
退出容器 | exit “如果是run -it启动时退出会关闭容器” |
退出容器 | ctrl + p + q "使用这个命令退出容器不会停止容器的运行" |
重新进入容器,并产生交互控制台(退出不会停止容器) | docker exec -it <容器的ID> /bin/bash |
重新进入重启,并产生控制台(退出会停止容器) | docker attach <容器的ID> /bin/bash |