|
|
|
|
# 一、容器操作命令
|
|
|
|
|
## 1.列出容器 PS
|
|
|
|
|
- **-a :** 显示所有的容器,包括未运行的。
|
|
|
|
|
- **-f :** 根据条件过滤显示的内容。
|
|
|
|
|
- **–format :** 指定返回值的模板文件。
|
|
|
|
|
- **-l :** 显示最近创建的容器。
|
|
|
|
|
- **-n :** 列出最近创建的n个容器。
|
|
|
|
|
- **–no-trunc :** 不截断输出。
|
|
|
|
|
- **-q :** 静默模式,只显示容器编号。
|
|
|
|
|
- **-s :** 显示总的文件大小。
|
|
|
|
|
容器的7种状态:created(已创建)、restarting(重启中)、running(运行中)、removing(迁移中)、paused(暂停)、exited(停止)、dead(死亡)。
|
|
|
|
|
|
|
|
|
|
## 2. 列出指定的容器的端口映射 docker port xxx
|
|
|
|
|
![[Snipaste_2023-03-06_09-25-52.png]]
|
|
|
|
|
|
|
|
|
|
## 3. 获取容器的日志 docker logs -f xxxx
|
|
|
|
|
- **-f :** 跟踪日志输出
|
|
|
|
|
- **–since :** 显示某个开始时间的所有日志
|
|
|
|
|
- **-t :** 显示时间戳
|
|
|
|
|
- **–tail :** 仅列出最新N条容器日志
|
|
|
|
|
![[Snipaste_2023-03-06_09-25-52 1.png]]
|
|
|
|
|
|
|
|
|
|
### 3.1 第二种方法
|
|
|
|
|
```shell
|
|
|
|
|
docker inspect --format '{{.LogPath}}' 86a50748c5d9
|
|
|
|
|
```
|
|
|
|
|
会返回日志路径
|
|
|
|
|
```shell
|
|
|
|
|
/var/lib/docker/containers/86a50748c5d9e63b1d30be71a043d2202b573306df0b0062072fa45234bf2836/86a50748c5d9e63b1d30be71a043d2202b573306df0b0062072fa45234bf2836-json.log
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 4. 查看容器中运行的进程信息 docker top xxx
|
|
|
|
|
![[Snipaste_2023-03-06_09-25-52 2.png]]
|
|
|
|
|
|
|
|
|
|
## 5.创建一个新的容器 docker run
|
|
|
|
|
语法:
|
|
|
|
|
```
|
|
|
|
|
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
|
|
|
|
|
```
|
|
|
|
|
OPTIONS说明:
|
|
|
|
|
|
|
|
|
|
- **-a stdin:** 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
|
|
|
|
|
|
|
|
|
|
- **-d:** 后台运行容器,并返回容器ID;
|
|
|
|
|
|
|
|
|
|
- **-i:** 以交互模式运行容器,通常与 -t 同时使用;
|
|
|
|
|
|
|
|
|
|
- **-P:** 随机端口映射,容器内部端口**随机**映射到主机的端口
|
|
|
|
|
|
|
|
|
|
- **-p:** 指定端口映射,格式为:主机(宿主)端口:容器端口
|
|
|
|
|
|
|
|
|
|
- **-t:** 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
|
|
|
|
|
|
|
|
|
|
- **--name="nginx-lb":** 为容器指定一个名称;
|
|
|
|
|
|
|
|
|
|
- **--dns 8.8.8.8:** 指定容器使用的DNS服务器,默认和宿主一致;
|
|
|
|
|
|
|
|
|
|
- **--dns-search example.com:** 指定容器DNS搜索域名,默认和宿主一致;
|
|
|
|
|
|
|
|
|
|
- **-h "mars":** 指定容器的hostname;
|
|
|
|
|
|
|
|
|
|
- **-e username="ritchie":** 设置环境变量;
|
|
|
|
|
|
|
|
|
|
- **--env-file=[]:** 从指定文件读入环境变量;
|
|
|
|
|
|
|
|
|
|
- **--cpuset="0-2" or --cpuset="0,1,2":** 绑定容器到指定CPU运行;
|
|
|
|
|
|
|
|
|
|
- **-m :**设置容器使用内存最大值;
|
|
|
|
|
|
|
|
|
|
- **--net="bridge":** 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
|
|
|
|
|
|
|
|
|
|
- **--link=[]:** 添加链接到另一个容器;
|
|
|
|
|
|
|
|
|
|
- **--expose=[]:** 开放一个端口或一组端口;
|
|
|
|
|
|
|
|
|
|
- **--volume , -v:** 绑定一个卷
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
|
|
|
|
|
```shell
|
|
|
|
|
docker run -p 80:80 -v /data:/data -d nginx:latest
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 6. 启动、停止、重启 docker start/stop/restart
|
|
|
|
|
```shell
|
|
|
|
|
docker start xxx
|
|
|
|
|
docker stop xxx
|
|
|
|
|
docker restart xxx
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 7.杀掉一个运行中的容器 docker kill
|
|
|
|
|
```shell
|
|
|
|
|
docker kill xxx
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 8. 删除一个或多个容器 docker rm
|
|
|
|
|
强制删除容器 db01、db02
|
|
|
|
|
```shell
|
|
|
|
|
docker rm -f db1 db3
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 9. 在运行的容器中执行命令或进入容器 docker exec
|
|
|
|
|
- **-d :** 分离模式: 在后台运行
|
|
|
|
|
- **-i :** 即使没有附加也保持STDIN 打开
|
|
|
|
|
- **-t :** 分配一个伪终端
|
|
|
|
|
在容器 mynginx 中以交互模式执行容器内 /root/runoob.sh 脚本:
|
|
|
|
|
```shell
|
|
|
|
|
docker exec -it mynginx /bin/sh /root/runoob.sh
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
在容器 mynginx 中开启一个交互模式的终端:
|
|
|
|
|
```shell
|
|
|
|
|
docker exec -i -t mynginx /bin/bash
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
通过 docker ps -a 命令查看已经在运行的容器,然后使用容器 ID 进入容器。
|
|
|
|
|
```shell
|
|
|
|
|
# docker ps -a ...
|
|
|
|
|
9df70f9a0714 openjdk "/usercode/script.sh…"
|
|
|
|
|
...
|
|
|
|
|
```
|
|
|
|
|
第一列的 9df70f9a0714 就是容器 ID。
|
|
|
|
|
通过 exec 命令对指定的容器执行 bash:
|
|
|
|
|
```
|
|
|
|
|
docker exec -it 9df70f9a0714 /bin/bash
|
|
|
|
|
# root 权限进入
|
|
|
|
|
docker exec -it -u root 9df70f9a0714 bash
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
# 二、容器rootfs命令
|
|
|
|
|
## 1. 容器与主机之间的数据拷贝 docker cp
|
|
|
|
|
- **-L :** 保持源目标中的链接
|
|
|
|
|
语法格式:
|
|
|
|
|
```shell
|
|
|
|
|
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
|
|
|
|
|
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
docker cp tomcat:/usr/local/tomcat/README.md ./
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
# 三、镜像仓库命令
|
|
|
|
|
## 1. 从镜像仓库中拉取或者更新指定镜像 docker pull
|
|
|
|
|
- **-a :** 拉取所有 tagged 镜像
|
|
|
|
|
- **–disable-content-trust :** 忽略镜像的校验,默认开启
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
docker pull mysql
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 2. 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库 docker push
|
|
|
|
|
- **–disable-content-trust :** 忽略镜像的校验,默认开启
|
|
|
|
|
```shell
|
|
|
|
|
docker push mysql:v2
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 3.从Docker Hub查找镜像 docker search
|
|
|
|
|
- **–automated :** 只列出 automated build类型的镜像;
|
|
|
|
|
- **–no-trunc :** 显示完整的镜像描述;
|
|
|
|
|
- **-f \<过滤条件>:** 列出指定条件的镜像。
|
|
|
|
|
```shell
|
|
|
|
|
docker search hadoop
|
|
|
|
|
```
|
|
|
|
|
![[Snipaste_2023-03-06_09-25-52 3.png]]
|
|
|
|
|
每列参数说明:
|
|
|
|
|
- **NAME:** 镜像仓库源的名称
|
|
|
|
|
- **DESCRIPTION:** 镜像的描述
|
|
|
|
|
- **OFFICIAL:** 是否 docker 官方发布
|
|
|
|
|
- **stars:** 类似 Github 里面的 star,表示点赞、喜欢的意思
|
|
|
|
|
- **AUTOMATED:** 自动构建
|
|
|
|
|
|
|
|
|
|
# 四、本地镜像管理命令
|
|
|
|
|
|
|
|
|
|
## 1. 列出本地镜像 docker images
|
|
|
|
|
- **-a :** 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)
|
|
|
|
|
- **–digests :** 显示镜像的摘要信息
|
|
|
|
|
- **-f :** 显示满足条件的镜像
|
|
|
|
|
- **–format :** 指定返回值的模板文件
|
|
|
|
|
- **–no-trunc :** 显示完整的镜像信息
|
|
|
|
|
- **-q :** 只显示镜像ID
|
|
|
|
|
```shell
|
|
|
|
|
docker images
|
|
|
|
|
```
|
|
|
|
|
![[Snipaste_2023-03-06_09-25-52 4.png]]
|
|
|
|
|
|
|
|
|
|
## 2. 删除本地一个或多个镜像 docker rmi
|
|
|
|
|
- **-f :** 强制删除;
|
|
|
|
|
- **–no-prune :** 不移除该镜像的过程镜像,默认移除;
|
|
|
|
|
```
|
|
|
|
|
强制删除本地镜像 guodong/ubuntu:v4 docker rmi -f guodong/ubuntu:v4
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 3.将指定镜像保存成 tar 归档文件 docker save
|
|
|
|
|
- **-o :** 输出到的文件。
|
|
|
|
|
将镜像 runoob/ubuntu:v3 生成 my_ubuntu_v3.tar 文档
|
|
|
|
|
```shell
|
|
|
|
|
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 4.load导入使用 `docker save` 命令导出的镜像 docker load
|
|
|
|
|
- **–input , -i :** 指定导入的文件,代替 STDIN。
|
|
|
|
|
- **–quiet , -q :** 精简输出信息。
|
|
|
|
|
```
|
|
|
|
|
导入镜像 docker load --input fedora.tar
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
# 五、基础版本信息
|
|
|
|
|
|
|
|
|
|
## 1.显示 Docker 系统信息,包括镜像和容器数。 docker info
|
|
|
|
|
![[Snipaste_2023-03-06_09-25-52 5.png]]
|
|
|
|
|
|
|
|
|
|
## 2.显示 Docker 版本信息 docker version
|
|
|
|
|
![[Snipaste_2023-03-06_09-25-52 6.png]]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 六、本地文件上传、下载docker
|
|
|
|
|
## 6.1 上传
|
|
|
|
|
1. 拿到容器ID
|
|
|
|
|
```shell
|
|
|
|
|
docker ps -a
|
|
|
|
|
```
|
|
|
|
|
2. docker cp 本地文件路径 ID全称:容器路径
|
|
|
|
|
```shell
|
|
|
|
|
docker cp mysql-connector-java-5.1.47.jar c8af6ce9bc12:/usr/share/java
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 6.2 下载
|
|
|
|
|
1. 拿到容器ID
|
|
|
|
|
```shell
|
|
|
|
|
docker ps -a
|
|
|
|
|
```
|
|
|
|
|
2. docker cp ID全称:容器路径 本地文件路径
|
|
|
|
|
```shell
|
|
|
|
|
docker cp c8af6ce9bc12:/usr/share/java /root
|
|
|
|
|
```
|
|
|
|
|
|