Docker客户端常用命令整理

之前在 https://blog.csdn.net/fengbingchun/article/details/109584460 中介绍过在Windows10家庭版和Ubuntu16.04上安装Docker的操作步骤,这里整理下Docker客户端常用命令。

在Windows10家庭版上运行Docker后,通过VMware就不能打开Ubuntu16.04虚拟机了,提示"VMware Workstation与Device/Credential Guard不兼容。在禁用Device/Credential Guard后,可以运行VMware Workstation",原因是Windows10开启Hyper-V后与VMware Workstation冲突导致无法运行和新建虚拟机,可通过以管理员身份打开PowerShell,然后输入命令"bcdedit /set hypervisorlaunchtype off",然后重启,此时VMware可正常运行了,不过在Windows10上的Docker就不能正常启动了,需在PowerShell中输入命令"bcdedit /set hypervisorlaunchtype auto",然后重启,Windows10上的Docker可正常运行。还有一种说法是将VMware更新到较高的版本。

Windows10上启动Docker:双击"Docker Desktop"图标,等待片刻,当鲸鱼图标静止时,Docker启动成功,之后打开PowerShell(Win+x后点击Windows PowerShell)使用Docker。
为了能在Docker Hub上拉取镜像,首先需要在https://hub.docker.com上免费注册一个账号。

每个命令的具体用法都可以通过--help来查看,如查看pull命令的详细用法,执行: $ docker pull --help

docker version # 输出Docker的版本信息
docker info # 显示一些相关的Docker系统信息
docker login # 登录Docker Hub,要求输入用户名和密码
docker logout # 退出Docker Hub
docker search ubuntu # 通过search命令查找Docker Hub中的镜像,如查找ubuntu,search命令并不支持查找TAG版本,可登录Docker Hub,搜索框中搜索ubuntu,然后再在Filter Tags中搜索指定的版本
docker pull ubuntu:16.04 # 从Docker Hub中获取镜像,若不给出用户名,则默认为library,为官方镜像,若拉取自己的镜像,则为docker pull fengbingchun/ubuntu:16.04
docker tag ubuntu:16.04 fengbingchun/ubuntu:v2.0 # 为一个镜像打标签,将其归入指定仓库,如将镜像"ubuntu:16.04"标记为"fengbingchun/ubuntu:v2.0"
docker images # 查看当前系统中已存在的镜像,列表包含了仓库名(REPOSITORY)、标签(TAG)、镜像ID(IMAGE ID)、创建时间(CREATED)、所占用空间(SIZE),此命令只会显示顶层镜像
docker image ls -a # 显示包括中间层镜像在内的所有镜像
docker image ls ubuntu # 根据仓库名列出镜像,如列出仓库名为ubuntu的所有镜像
docker image prune # 删除虚悬镜像(dangling image): 如果新旧镜像同名,旧镜像名称被取消,从而出现仓库名、标签均为<none>的镜像,一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的
docker image rm hello-world # 删除本地镜像,如删除镜像名为hello-world的镜像,除了使用镜像名(仓库名:标签)删除外,还可以使用镜像短ID、镜像长ID或镜像摘要(DIGEST)删除镜像
docker run fengbingchun/ubuntu:16.04 env # 查看指定镜像"fengbingchun/ubuntu:16.04"支持的环境变量
docker save -o ubuntu_v1.0.tar fengbingchun/ubuntu:v1.0 # 保存一个镜像到tar包,"ubuntu_v1.0.tar"为tar包名,"fengbingchun/ubuntu:v1.0"为本地镜像
docker load -i ubuntu_v1.0.tar # 从tar包加载一个镜像
docker push fengbingchun/ubuntu:16.04 # 将自己(用户名为fengbingchun)的镜像推送到Docker Hub
docker history ubuntu:16.04 # 查看镜像内的历史记录,如查看ubuntu:16.04
# 通过Dockerfile构建镜像,-t后面的"fengbingchun/ubuntu:16.04"为新建镜像的名称,最后的".",实际上是在指定上下文的目录,docker build命令会将该目录下的内容打包交给Docker引擎以帮助构建镜像
docker build -t fengbingchun/ubuntu:16.04 .
docker container ls -a # 查看容器的状态
docker container exec -it bcb8 bash # 进入容器,其中"bcb8"为容器ID(ID值能与其它容器ID区分开即可),只有当容器状态为Up时即容器运行时才有效
# 新建并启动一个容器,启动一个bash终端,允许用户进行交互,-t选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i则让容器的标准输入保持打开
docker run -it fengbingchun/ubuntu:16.04 /bin/bash
docker run fengbingchun/ubuntu:16.04 /bin/echo "hello" # 新建一个容器,并输出"hello"之后终止容器
docker container start bcb8 # 将一个已经终止的容器启动运行,其中"bcb8"为容器ID
docker container stop bcb8 # 将一个运行中的容器终止,其中"bcb8"为容器ID
docker export -o ubuntu.tar bcb8 # 导出容器,将导出容器快照到本地tar包,其中"bcb8"为容器ID
docker import ubuntu.tar fengbingchun/ubuntu:v1.1 # 导入tar包容器快照,从容器快照文件中再导入为镜像
docker container rm bcb8 # 删除一个处于终止状态的容器,其中"bcb8"为容器ID
docker container rm -f bcb8 # 删除一个运行中的容器,其中"bcb8"为容器ID
docker container prune # 删除掉所有处于终止状态的容器
docker diff bcb8 # 查看容器的存储层的具体的改动,其中"bcb8"为容器ID
docker commit bcb8 fengbingchun/ubuntu:v1.0 # 在原有镜像的基础上,再加上容器的存储层,并构成新的镜像,其中"bcb8"为容器ID,"fengbingchun/ubuntu:v1.0"为新建镜像的名称
docker inspect fengbingchun/ubuntu:v1.0 # 显示指定镜像的具体配置信息,"fengbingchun/ubuntu:v1.0"为镜像的名称
docker inspect bcb8 # 显示指定容器的具体配置信息,其中"bcb8"为容器ID
docker inspect --format '{{.NetworkSettings.IPAddress}}' bcb8 # 获取指定容器的IP地址,其中"bcb8"为容器ID,只有当容器状态为Up时即容器运行时才有效
docker cp 1.txt bcb8:/home/ # 将主机文件或目录拷贝到容器指定的目录下,其中"bcb8"为容器ID
docker cp bcb8:/home/1.txt . # 将容器指定目录或指定目录下的文件拷贝到主机当前目录下,其中"bcb8"为容器ID
docker logs -f bcb8 # 获取指定容器的日志,其中"bcb8"为容器ID
docker rename yyyy xxxx # 重命名一个容器,其中"yyyy"为原容器名,"xxxx"为新容器名
docker top bcb8 # 查看正在运行中的容器的进程信息,其中"bcb8"为容器ID
docker system df # 查看镜像、容器、数据卷所占用的空间

 

<think>好的,我现在需要回答用户关于如何使用Docker查看Mongo数据库的问题。首先,我需要确保自己理解用户的需求。用户可能已经运行了MongoDB的Docker容器,现在想要连接到这个容器中的数据库,执行一些操作,比如查看数据或执行查询。接下来,我需要回忆Docker和MongoDB相关的命令和步骤。 首先,用户可能需要知道如何启动MongoDB容器。如果用户还没有运行容器,应该先指导他们如何拉取镜像并启动容器。这部分可能需要用到docker run命令,指定端口映射、数据卷等参数。不过用户的问题更偏向于“查看”现有的数据库,所以可能假设容器已经在运行了。 接下来,用户需要连接到MongoDB实例。常用的方法有两种:进入容器的shell然后使用mongo命令行工具,或者直接从本地使用mongo客户端连接。如果是容器内执行,可以使用docker exec -it <容器名> mongo命令。不过需要注意,MongoDB 5.0及以上版本可能已经将mongo命令替换为mongosh,所以可能需要调整命令。 另外,用户可能需要了解如何执行基本的MongoDB操作,比如列出数据库、切换数据库、查询集合中的数据等。这部分需要提供一些常见的MongoDB命令,比如show dbs, use dbname, db.collection.find()等。 同时,还要考虑用户可能遇到的问题,比如容器没有正确运行,或者端口没有暴露导致无法连接。这时候需要提醒用户检查容器的状态,确认端口映射是否正确,或者防火墙设置是否允许连接。 此外,数据持久化也是一个重要点。如果用户没有使用数据卷,容器删除后数据会丢失。可能需要提醒用户使用-v参数挂载数据卷,确保数据持久化。 现在,我需要将上述思考整理成一个结构清晰的回答,分步骤说明如何查看Mongo数据库。同时,按照用户的系统级指令,确保数学公式正确使用$...$或$$...$$格式,但在这个问题中可能涉及较少数学公式,不过可能会有命令中的变量,如容器名、端口号等,需要用反引号包裹而非LaTeX。不过用户要求中的数学表达式部分可能不适用于此技术问题,所以主要确保命令格式正确,使用代码块或适当标记。 最后,检查回答是否符合用户要求的中文回答,结构清晰,步骤明确,帮助用户逐步解决问题,并确保信息准确可靠。</think>以下是使用Docker查看Mongo数据库的步骤说明: --- ### 1. **启动MongoDB容器** 如果尚未运行容器,先拉取镜像并启动: ```bash docker run -d --name my-mongo -p 27017:27017 mongo ``` - `-d`:后台运行容器 - `--name my-mongo`:自定义容器名称 - `-p 27017:27017`:将宿主机的27017端口映射到容器的27017端口(MongoDB默认端口) - `mongo`:使用的镜像名称 --- ### 2. **连接到MongoDB** #### 方法1:通过容器Shell直接进入Mongo客户端 ```bash docker exec -it my-mongo mongosh ``` - `docker exec`:在运行的容器中执行命令 - `-it`:以交互模式进入容器 - `my-mongo`:容器名称 - `mongosh`:MongoDB 6.0+默认命令行工具(旧版本可能用`mongo`) #### 方法2:通过本地客户端连接 如果已安装`mongosh`或`mongo`客户端工具,可直接连接: ```bash mongosh "mongodb://localhost:27017" ``` --- ### 3. **执行数据库操作** 连接成功后,使用MongoDB命令操作: #### 查看所有数据库 ```javascript show dbs ``` #### 切换到目标数据库 ```javascript use mydb // 切换到数据库mydb(若不存在则自动创建) ``` #### 查看当前数据库的集合(表) ```javascript show collections ``` #### 查询集合中的数据 ```javascript db.users.find() // 查询集合users的所有文档 db.users.find({ age: { $gt: 20 } }) // 查询年龄大于20的文档 ``` --- ### 4. **验证容器状态(可选)** - 查看运行中的容器: ```bash docker ps ``` - 检查容器日志: ```bash docker logs my-mongo ``` --- ### 5. **持久化数据(重要)** 若需保留数据,启动容器时挂载数据卷: ```bash docker run -d --name my-mongo -p 27017:27017 -v /path/on/host:/data/db mongo ``` - `-v /path/on/host:/data/db`:将宿主机的目录映射到容器的数据存储路径。 --- ### 常见问题 1. **连接失败**:确认容器是否运行(`docker ps`),检查端口映射是否正确。 2. **命令未找到**:MongoDB 6.0+需使用`mongosh`而非`mongo`。 3. **权限问题**:若启用了认证,需在连接时指定用户名和密码: ```bash docker exec -it my-mongo mongosh -u admin -p password ``` 通过以上步骤,你可以轻松使用Docker操作Mongo数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值