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