新增:《个人常用Docker命令》

This commit is contained in:
2022-10-02 00:22:04 +08:00
parent 1044d4aa49
commit e701357014
2 changed files with 197 additions and 1 deletions

View File

@@ -0,0 +1,196 @@
---
title: 个人常用Docker命令
author: 查尔斯
date: 2022/10/01 22:33
isTop: true
categories:
- 杂碎逆袭史
tags:
- Docker
---
# 个人常用Docker命令 <Badge text="持续更新" type="warning" />
## 镜像相关
### 查看本地镜像列表
```shell
docker images
```
### 从记录中心查询镜像
```shell
docker search 镜像关键词
```
### 从记录中心拉取镜像到本地
::: warning 笔者说
如果镜像名称后不指定 **标签/版本** 则会默认使用最新版本latest
例如docker pull tomcat:8.5.0 拉取的就是 8.5.0 版本的 tomcat 镜像,而 docker pull tomcat -> 拉取的实际是 docker pull tomcat:latest这个 latest 是跟随记录中心中的最新版本变化的,无法确定当前拉取的是哪一个版本。
:::
```shell
docker pull 镜像名称[:标签/版本]
```
### 删除本地镜像
```shell
# 删除指定镜像
docker rmi 镜像ID/镜像名称 [镜像ID/镜像名称...]
# 删除所有镜像
docker rmi `docker images -q`
```
::: tip 笔者说
`-q` 是 quiet 的意思加上这个参数后docker images 输出的就不是镜像详细列表了,而是镜像 ID 列表,通常用于编写脚本时使用。
所以,上方删除所有镜像的命令实际是 docker rmi 镜像ID1 镜像ID2...
:::
### 从 Dockerfile 创建镜像
::: warning 笔者说
如果镜像名称后不指定 **标签/版本** 则会默认使用最新版本latest
:::
```shell
docker build -t 镜像名称[:标签/版本] Dockerfile文件路径
```
### 将本地镜像导出为 tar 文件
::: warning 笔者说
如果镜像名称后不指定 **标签/版本** 则会默认使用最新版本latest
:::
```shell
docker save -o/-output 文件路径.tar 镜像名称[:标签/版本]
```
### 从 tar 文件导入为本地镜像
```shell
docker load -i/-input 文件路径.tar
```
## 容器相关
### 查看容器列表
```shell
# 查看正在运行的容器
docker ps
# 查看全部容器(包含已经停止的)
docker ps -a
# 模糊查询容器
docker ps [-a] | grep 容器关键词
```
### 创建容器并运行
::: warning 笔者说
如果镜像名称后不指定 **标签/版本** 则会默认使用最新版本latest
如果本地不存在该版本的镜像,则会先从记录中心拉取到本地。
:::
```shell
docker run -d [-p 宿主机端口:容器内部端口] [-v 宿主机目录:容器内部目录] [--network 网络名称 --network-alias 网络别名] --name 容器名称 镜像名称[:标签/版本]
```
### 停止容器
```shell
# 停止指定容器
docker stop 容器ID/容器名称 [容器ID/容器名称...]
# 停止所有容器
docker stop `docker ps -a -q`
```
::: tip 笔者说
`-q` 是 quiet 的意思加上这个参数后docker ps 输出的就不是容器详细列表了,而是容器 ID 列表,通常用于编写脚本时使用。
所以,上方停止所有容器的命令实际是 docker stop 容器1ID 容器2ID...
:::
### 启动容器
```shell
docker start 容器ID/容器名称
```
### 删除容器
```shell
# 删除指定容器
docker rm 容器ID/容器名称 [容器ID/容器名称...]
# 删除所有容器
docker rm `docker ps -a -q`
```
::: tip 笔者说
`-q` 是 quiet 的意思加上这个参数后docker ps 输出的就不是容器详细列表了,而是容器 ID 列表,通常用于编写脚本时使用。
所以,上方删除所有容器的命令实际是 docker rm 容器1ID 容器2ID...
:::
### 进入容器内部
```shell
docker exec -it 容器ID/容器名称 /bin/bash
docker exec -it 容器ID/容器名称 /bin/sh
```
### 从容器内部退出
```shell
exit
```
### 向容器内拷贝文件
```shell
docker cp 宿主机内文件路径 容器名称:容器内文件路径
```
### 备份容器为本地镜像
::: warning 笔者说
如果镜像名称后不指定 **标签/版本** 则会默认使用最新版本latest
:::
```shell
docker commit [-a "作者"] [-m "信息"] 容器ID/容器名称 镜像名称[:标签/版本]
```
## 网络相关
### 查看网络列表
```shell
docker network ls
```
### 创建bridge网络
```shell
docker network create 网络名称
```
### 删除网络
```shell
docker network rm 网络ID/网络名称
```