You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

240 lines
7.2 KiB

# 一、容器操作命令
## 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
```