docker常用命令记录

目录

前言

一、镜像操作

二、容器操作

三、colmap_3.10 + docker安装运行


前言

记录在docker中常用的一些命令,便于以后查询使用,以下内容为大模型生成,使用时请注意判断对错。

一、镜像操作

1. 列出本地镜像

docker images

  • 输出内容

    • REPOSITORY:镜像的仓库名称。

    • TAG:镜像的标签。

    • IMAGE ID:镜像的唯一标识符。

    • CREATED:镜像的创建时间。

    • SIZE:镜像的大小。

2. 列出所有镜像(包括悬挂的镜像)

docker images -a

  • 功能:列出所有镜像,包括没有标签的悬挂镜像(dangling images)。

  • 悬挂镜像:是指那些没有被任何标签引用的镜像,通常是通过构建镜像时产生的中间镜像。

3. 仅显示镜像的ID

docker images --format "{{.ID}}"

  • 功能:仅显示镜像的ID,方便在脚本中使用。

4. 显示镜像的详细信息

docker inspect <image_id>

  • 功能:显示指定镜像的详细信息,包括配置、层信息等。

  • 参数

    • <image_id>:镜像的ID或名称。

5. 删除镜像

docker rmi <image_id>

  • 功能:删除指定的镜像。

  • 参数

    • <image_id>:镜像的ID或名称。

  • 注意:如果镜像正在被一个或多个容器使用,需要先停止并删除这些容器。

6. 删除所有未使用的镜像

docker image prune

  • 功能:删除所有未被使用的镜像。

  • 选项

    • -a:删除所有未被使用的镜像(包括悬挂的镜像)。

    • -f:强制删除,不提示确认。

7. 删除悬挂的镜像

docker image prune -f

  • 功能:删除所有悬挂的镜像(没有标签的镜像)。

  • 选项

    • -f:强制删除,不提示确认。

8. 按标签过滤镜像

docker images <repository>:<tag>

  • 功能:列出指定仓库和标签的镜像。

  • 参数

    • <repository>:镜像仓库名称。

    • <tag>:镜像标签。

9. 按仓库过滤镜像

docker images <repository>

  • 功能:列出指定仓库的所有镜像。

  • 参数

    • <repository>:镜像仓库名称。

10. 按大小排序镜像

docker images --format "{{.Size}} {{.Repository}}:{{.Tag}}" | sort -h

  • 功能:按镜像大小排序。

  • 说明:使用 sort -h 命令对镜像大小进行排序。

11. 保存镜像到文件

docker save image_id > file_name.tar

docker save image_id -o file_name.tar

docker save image_name:tag -o file_name.tar

  • 功能:将镜像保存为一个 tar 文件。

  • 参数

    • <image_id>:镜像的ID或名称。

    • <file_name>:保存的文件名。

12. 从文件加载镜像

docker load < file_name.tar

docker load -i file_name.tar

  • 功能:从 tar 文件加载镜像。

  • 参数

    • <file_name>:保存的文件名。

13. 然后为镜像添加标签

docker tag <IMAGE_ID> your-repository:your-tag

 14. 从容器导出.tar文件,并加载

docker export  [容器ID]  >  [导出文件名].tar

docker save方式可能会保存一些无用数据。

注意,这种方式只导出容器的文件系统,不包括容器的运行状态、配置等信息。导出的容器文件可以使用以下命令导入为一个新的镜像,然后通过 docker run 命令基于该镜像启动新的容器。

docker import  [导出文件名].tar  my_new_image

二、容器操作

1、创建容器

docker run [选项] <镜像名称>:<标签>

选项

选项解释例子
--name为容器指定一个名称docker run --name my-container my-image
--label 或 -l为容器添加标签,用于分类或标记容器例:docker run --label project=myproject my-image
-d在后台(守护模式)运行容器docker run -d my-image
-it以交互模式运行容器,通常用于启动一个终端docker run -it my-image /bin/bash
--rm容器退出后自动删除,避免容器堆积docker run --rm my-image
-p 或 --publish将容器的端口映射到宿主机的端口docker run -p 8080:80 my-image
--network指定容器连接到的网络docker run --network my-network my-image
--ip为容器指定一个静态 IP 地址(仅在自定义网络中有效)docker run --network my-network --ip 192.168.1.100 my-image
-v 或 --volume挂载宿主机的目录或文件到容器中docker run -v /host/path:/container/path my-image
--mount更灵活地挂载卷或绑定挂载docker run --mount type=bind,source=/host/path,target=/container/path my-image
-e 或 --env设置环境变量docker run -e VAR_NAME=value my-image
--env-file从文件中加载环境变量docker run --env-file my-env-file.env my-image
--cpus限制容器可以使用的 CPU 数量docker run --cpus 2.0 my-image
--memory 或 -m限制容器可以使用的内存大小docker run --memory 2g my-image
--memory-swap设置容器的总内存限制(内存 + 交换区)docker run --memory 2g --memory-swap 4g my-image
--entrypoint覆盖镜像的默认入口点docker run --entrypoint /bin/bash my-image
--log-driver指定日志驱动程序docker run --log-driver json-file my-image
--log-opt设置日志选项docker run --log-opt max-size=10m my-image
--privileged以特权模式运行容器,授予容器更高的权限

docker run --privileged my-imagexxx

--cap-add 和 --cap-drop添加或移除容器的 Linux 权限docker run --cap-add SYS_ADMIN my-image
--user 或 -u指定容器运行的用户docker run -u 1000:1000 my-image
--restart设置容器的重启策略docker run --restart always my-image
--read-only将容器的根文件系统设置为只读docker run --read-only my-image
--hostname 或 -h设置容器的主机名docker run --hostname my-host my-image
--workdir 或 -w设置容器的工作目录docker run -w /app my-image
<command>指定容器启动时运行的命令docker run my-image /bin/bash -c "echo Hello, World!"
--gpus all这个选项用于启用容器对 GPU 的访问。all 表示容器可以使用所有可用的 GPU。这通常用于加速计算密集型任务,如 3D 重建。如果你的系统没有安装支持 Docker 的 GPU 驱动或 NVIDIA Docker runtime,这个选项可能会导致错误docker run --gpus all my-image

docker ps

2、列出运行状态的容器

  • 选项

    • -a--all:显示所有容器(包括未运行的)。

    • -l--latest:显示最近创建的容器。

    • -n:显示最近创建的N个容器。

    • -s--size:显示容器的大小。

    • -q--quiet:仅显示容器的ID。

    • --format:自定义输出格式。

3、查看所有的容器

docker ps -a

4、启动容器

docker start<容器ID 或 容器名称>

5、关闭容器

docker stop <容器ID 或 容器名称>

6、重启容器

docker restart <容器ID 或 容器名称>

7、查看容器详细信息

docker inspect [选项] <容器ID 或 容器名称>

8、暂停容器

docker pause <容器ID 或 容器名称>

9、恢复容器

docker unpause <容器ID 或 容器名称>

10、主机与容器之间复制文件或目录

docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

  • 功能:将文件或目录从主机复制到容器。

  • 参数

    • SRC_PATH:主机上的源文件或目录路径。

    • CONTAINER:容器的ID或名称。

    • DEST_PATH:容器中的目标路径。

 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

  • 功能:将文件或目录从容器复制到主机。

  • 参数

    • CONTAINER:容器的ID或名称。

    • SRC_PATH:容器中的源文件或目录路径。

    • DEST_PATH:主机上的目标路径。

11、删除容器

docker rm <容器ID 或 容器名称>

  • 选项

    • -f--force:强制删除正在运行的容器。

    • -v:删除与容器关联的卷。

12、进入容器

例如:docker exec -it <容器ID 或 容器名称> /bin/bash

docker exec [OPTIONS] CONTAINER COMMAND [ARG...] 

  • 参数

    • CONTAINER:容器的ID或名称。

    • COMMANDARG:要在容器中执行的命令及其参数。

  • 选项

    • -d--detach:在后台运行命令。

    • -i--interactive:保持STDIN打开。

    • -t--tty:分配一个伪终端。

    • -e--env:设置环境变量。 

13、查看容器中的进程

docker top <容器ID 或 容器名称>

14、查看容器的资源使用情况

docker stats <容器ID 或 容器名称>

  • 功能:实时显示一个或多个容器的资源使用情况(CPU、内存、网络等)。

  • 选项

    • -a--all:显示所有容器的资源使用情况。

    • -n:显示最近的N个容器的资源使用情况。

    • -t--no-stream:仅显示一次资源使用情况,不持续更新。

15、查看容器日志

docker logs [OPTIONS] CONTAINER

  • 参数

    • CONTAINER:容器的ID或名称。

  • 选项

    • -f--follow:实时跟踪日志输出。

    • -t--timestamps:显示日志的时间戳。

    • --since:显示从指定时间戳之后的日志。

    • --until:显示到指定时间戳为止的日志。

    • -n:显示最近的N条日志。

16、更新容器的资源限制

docker update [OPTIONS] CONTAINER [CONTAINER...]

  • 功能:更新一个或多个容器的资源限制(如CPU、内存等)。

  • 选项

    • --cpu-period:限制CPU周期。

    • --cpu-quota:限制CPU配额。

    • --cpus:限制CPU数量。

    • --memory:限制内存使用量。

    • --memory-swap:限制内存和交换空间的总使用量。

 17、提交容器为新的镜像

docker commit mycontainer my-new-image

  • mycontainer 是容器的名称

  • my-new-image 是新镜像的名称 

三、colmap_3.10 + docker安装运行

1、拉取镜像

docker pull colmap/colmap:20240723.601

2、安装NVIDIA Container Toolkit,参考:https://blog.csdn.net/zhngyue123/article/details/146036967

3、运行

xhost +

 sudo docker run -itd \
  --name colmap310 \
  -p 6789:22 \
  -v /etc/localtime:/etc/localtime:ro \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -e DISPLAY=unix$DISPLAY \
  -e GDK_SCALE \
  -e GDK_DPI_SCALE \
  --ipc=host \
  --privileged=true \
  --gpus all \
  colmap/colmap:20240723.601 \
  /bin/bash

 colmap gui

4、不需要可视化界面的情况

命令行运行colmap

(1) 特征提取

colmap feature_extractor --database_path xxx/database.db --image_path xxx --ImageReader.single_camera=1 --ImageReader.camera_model OPENCV --SiftExtraction.use_gpu=1

 (2) 特征匹配

colmap exhaustive_matcher --database_path xxx/database.db --SiftMatching.use_gpu=1

 (3) 稀疏建图

colmap mapper --database_path xxx/database.db --image_path xxx --output_path xxx/sparse --Mapper.ba_global_function_tolerance=0.000001

 (4) 二进制文件转TXT

colmap model_converter --input_path xxx/sparse/0 --output_path xxx --output_type TXT

5、在没有显卡的机器上运行

在docker中一步一步安装

1、创建 ubuntu:20.04 的容器

2、换国内源

cp   /etc/apt/sources.list   /etc/apt/sources.list.bak

chmod  777  /etc/apt/sources.list 

echo -n "" > /etc/apt/sources.list

echo "下面的国内源" > /etc/apt/sources.list

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
 
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
 
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
 
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
 
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse 

3、安装colmap

apt-get update && apt-get install -y \
    git \
    cmake \
    build-essential \
    vim

apt-get update && apt-get install -y \
    libboost-program-options-dev \
    libboost-filesystem-dev \
    libboost-graph-dev \
    libboost-regex-dev \
    libboost-system-dev \
    libboost-test-dev \

    libflann-dev \

    libmetis-dev \
    libeigen3-dev \
    libsuitesparse-dev \
    libfreeimage-dev \
    libgoogle-glog-dev \
    libgflags-dev \
    libglew-dev

apt-get update && apt-get install -y \
    qtbase5-dev \
    libqt5opengl5-dev \
    libcgal-dev \
    libcgal-qt5-dev

apt-get update && apt-get install -y libatlas-base-dev libsuitesparse-dev

git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver
mkdir build
cd build
# 禁用cuda
cmake -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF -DCUDA_USE_STATIC_CUDA_RUNTIME=OFF ..
make -j$(nproc)
sudo make install

git clone https://github.com/colmap/colmap.git

cd colmap
mkdir build
cd build
cmake ..
make -j$(nproc)
sudo make install

 注意安装ceres的时候要禁用cuda,如果eigen、glog报错,就卸载从源码安装。

4、命令行运行colmap

(1) 特征提取

colmap feature_extractor --database_path xxx/database.db --image_path xxx --ImageReader.single_camera=1 --ImageReader.camera_model OPENCV --SiftExtraction.use_gpu=0

 (2) 特征匹配

colmap exhaustive_matcher --database_path xxx/database.db --SiftMatching.use_gpu=0

 (3) 稀疏建图

colmap mapper --database_path xxx/database.db --image_path xxx --output_path xxx/sparse --Mapper.ba_global_function_tolerance=0.000001

 (4) 二进制文件转TXT

colmap model_converter --input_path xxx/sparse/0 --output_path xxx --output_type TXT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值