Windows系统最大的特点就是可视化操作,点点鼠标就能操作软件。但是在特殊的情况下,比如docker desktop图标点了之后没反应,但是看后台程序,它又已经运行了,这时候就要使用命令行来操作了。
针对这次情况,所做的操作:先尝试在任务管理器里找到docker desktop,结束任务。但是后台任务还在执行。后来是结束了docker desktop backend,才彻底结束了它。然后再点图标启动,终于正常了。
尽管现在已经可以用视图操作,还是来学习实践一下命令行的操作。
首先看看docker的信息:
使用docker info命令
docker info
Client:Version: 27.4.0Context: desktop-linuxDebug Mode: falsePlugins:ai: Ask Gordon - Docker Agent (Docker Inc.)Version: v0.5.1Path: C:\Program Files\Docker\cli-plugins\docker-ai.exebuildx: Docker Buildx (Docker Inc.)Version: v0.19.2-desktop.1Path: C:\Program Files\Docker\cli-plugins\docker-buildx.exe
看看当前docker的容器存盘文件
docker images
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.all-hands.dev/all-hands-ai/openhands 0.28 a25b686e60d5 10 hours ago 2.42GB
docker.all-hands.dev/all-hands-ai/runtime 0.28-nikolaik 112ae092d9eb 10 hours ago 5.27GB
docker.all-hands.dev/all-hands-ai/runtime <none> 88da4184e1f4 3 days ago 5.27GB
langgenius/dify-web 0.15.2 bbbbdd8f0dfc 6 weeks ago 436MB
langgenius/dify-api 0.15.2 7308d5efc456 6 weeks ago 3.01GB
redis 6-alpine 8d7a968b2baf 2 months ago 30.2MB
tomcat latest f62f518e5c5c 3 months ago 467MB
docker启动容器docker run
在powershell下,跟Linux下不同,最后的连接符,用的是"`" 而不是"\" 。而在cmd下,使用 ^
符号作为换行符,下面以powershell下为例:
docker run -it --rm --pull=always `-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.28-nikolaik `-e LOG_ALL_EVENTS=true `-v C:\Users\Admin\.openhands-state:/.openhands-state `-p 3000:3000 `--add-host host.docker.internal:host-gateway `--name openhands-app `docker.all-hands.dev/all-hands-ai/openhands:0.28
比如我们启动一个简单的web服务,就既可以在cmd下,也可以在powershell下使用:
docker run tomcat
docker启动容器docker start
start和run的区别是,start之后会退回到终端。
docker start busy_galileo
busy_galileo
查看启动的容器docker ps
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
783138d88984 tomcat "catalina.sh run" About a minute ago Up 52 seconds 8080/tcp busy_galileo
2eb731da3231 4328059557e8 "/main" 3 minutes ago Up 3 minutes vigorous_goodall
关闭容器docker stop
docker stop busy_galileo
busy_galileoC:\Users\Admin>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2eb731da3231 4328059557e8 "/main" 4 minutes ago Up 4 minutes vigorous_goodall
进入正在运行的容器:
docker exec -it <container_id> /bin/bash
比如用docker ps列出当前运行容器,然后可以根据容器id进去。
删除容器docker rm
docker rm busy_galileo
busy_galileo
用id号删除
docker rm 2eb731da3231
2eb731da3231
从硬盘删除容器镜像存盘文件
docker rmi tomcat
docker rmi tomcat
Untagged: tomcat:latest
Untagged: tomcat@sha256:935ff51abecc8dc793cb19c229ac7a988c8899e5fcba5e69ae96530fa76c4d56
Deleted: sha256:f62f518e5c5c117ed2b23e2868bcbb510edbc7e403246e74694c3e7e05213673
Deleted: sha256:21a52b0ff969560eb7d92bcc040367a001ba0f7da4106663e0ab101b2569f9fb
Deleted: sha256:7a43f5a5837a214963cad3eb2ed5d392e9e297e8fe683b4dd3f88d170a4af962
Deleted: sha256:09bac625fd98c313fbb8e456912fea86f9cf819497001c5a4a046978973f77db
Deleted: sha256:4dd4e3829be4d2564be9abc10745e9784e7ad62e56af90c3c244c596ce638b59
Deleted: sha256:c4a0b3b7746a883fdfd71e07ade13ec4e2ba3812fbcf9527ea49fbb643939940
Deleted: sha256:3ddd3978477832533d9fe07032a9a3bb347740076de810e640dcfc2dbf85e037
Deleted: sha256:c38291e406fe42590effeeabf6a8522b7441718345d9c2bdb56bd217e20b148c
Deleted: sha256:f1ea1df560b257879739de224d12f09c1402ccc4b18405b998927ef1de1af7f1
Deleted: sha256:687d50f2f6a697da02e05f2b2b9cb05c1d551f37c404ebe55fdec44b0ae8aa5c
当然如果文件太多,在视窗里面删除更方便。
关于docker服务相关
查看docker服务的名字
在cmd命令行下:
sc queryex type=service state=all | findstr "docker"
SERVICE_NAME: com.docker.service
启动和关闭服务
在powershell下
PS C:\Windows\system32> Start-Service -Name com.docker.service
PS C:\Windows\system32> Stop-Service -Name com.docker.service
但是测试下来好像并没有生效。
在以管理员启动的cmd下:
C:\Windows\system32>net start com.docker.service
Docker Desktop Service 服务正在启动 .
Docker Desktop Service 服务已经启动成功。C:\Windows\system32>net stop com.docker.service
Docker Desktop Service 服务正在停止.
Docker Desktop Service 服务已成功停止。
启动和停止服务显示是生效的,好像并没有生效。