容器是 Docker 中运行的实例化镜像,可以将镜像与容器的关系类比为类(class)与对象(object)的关系。镜像是一个包含了运行应用程序所需的一切组件(代码、运行时环境、库等)的静态模板,而容器则是在镜像的基础上创建的动态实体。容器可以被启动、停止、删除,每个容器都是相互隔离的运行环境。
Docker常用命令
# 将当前用户添加到该组,登出并重新登录以使更改生效,后续可以不必再用sudo
sudo usermod -aG docker $USER
# 查看Docker版本信息
docker version
# 查看docker简要信息
docker -v
# 检索镜像
docker search 关键字
# 拉取镜像
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
# 列出镜像
docker image ls
docker images
# 运行
docker-compose up -d # or `docker compose up -d` based on your docker-compose version
# 版本升级
docker-compose pull && docker-compose up -d # Or `docker compose up -d`
容器操作命令
请注意,执行这些命令之前,请确保您具有适当的权限来执行 Docker 命令。
# 查看运行的容器列表
docker ps
# 停止一个正在运行的容器
docker stop <container_id_or_name>
# 停止所有正在运行的容器
docker stop $(docker ps -q)
停止包含 “immich” 关键词的所有容器,您可以使用以下命令:
docker stop $(docker ps -q -f name=immich)
这个命令使用了 docker ps
命令的 -q
选项来仅返回容器的 ID, -f
选项用于过滤容器,并通过指定 name=immich
来只返回名称包含 “immich” 的容器。然后,这些容器的 ID 将作为参数传递给 docker stop
命令,以停止它们。
请注意,这个命令会停止所有名称包含 “immich” 的容器,而不仅仅是容器名称中包含 “immich” 的部分。
要重新启动已停止的容器,您可以使用以下命令:
docker start $(docker ps -aq -f status=exited -f name=immich)
这个命令使用了 docker ps
命令的 -aq
选项来返回所有容器的 ID,-f
选项用于过滤容器,并通过指定 status=exited
和 name=immich
来只返回已停止的名称包含 “immich” 的容器。然后,这些容器的 ID 将作为参数传递给 docker start
命令,以重新启动它们。
同样地,这个命令会重新启动所有已停止的、名称包含 “immich” 的容器,而不仅仅是容器名称中包含 “immich” 的部分。
Windows上使用docker
以下均为 Windows 操作系统上的 docker 安装使用方法,区别是 Docker Desktop on Windows
与 WSL Docker
,最终效果一样,只是一个有图形界面一个没有。均需要先安装 wsl,可以参考:在Windows上使用VisualStudio配合WSL进行Linux程序开发 — 朱皮特的烂笔头
安装
Docker Desktop on Windows
- 下载安装 Docker Desktop on Windows
- 安装 wsl
- 运行
Docker Desktop on Windows
WSL Docker
安装 wsl
在 wsl 中安装
docker
:# 安装 docker curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh # 安装完成后输入命令 sudo groupadd docker sudo gpasswd –a $USER docker newgrp docker # 如果不行,可以在前面执行一句: # 启动 docker sudo service docker start # 检查 docker 是否安装成功,返回:Docker is running 说明正常运行 sudo service docker status
局域网访问Windows 10 WSL 的网络服务
应用场景:在 Windows 10 系统上 WSL
里运行的服务端程序,需要在局域网内访问(例如手机)。如果手机与Windows宿主机不在同一个网段,例如手机使用路由器WiFi,但是宿主机使用光猫直连,则可以配置路由器的上网模式为桥接模式(Bridge AP),让光猫来统一给设备分配IP地址,这样所有设备就都在一个网段了,配置完成后记得重启路由器。
解决办法:在 Windows 宿主机上做端口映射。
假定有以下信息:
- Windows宿主机的IP:192.168.1.2
- WSL服务的IP及端口:172.23.192.21:2283
打开 powershell
,输入命令:
# 端口映射,将对本机 ip:8080 的访问请求转发到 172.23.192.21:2283
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 protocol=tcp listenport=8080 connectport=2283 connectaddress=172.23.192.21
# 查看端口映射情况
netsh interface portproxy show all
# 配置防火墙添加允许入站规则
New-NetFirewallRule -DisplayName "Allow Inbound TCP Port 8080" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8080
# 如需删除配置使用如下命令:
netsh interface portproxy show v4tov4
netsh interface portproxy delete v4tov4 listenport=8080
Remove-NetFirewallRule -DisplayName "Allow Inbound TCP Port 8080"
docker更新提速
docker
应用需要更新的时候发现速度超级慢,经常性就失败了,为了加快更新速度,可以按照如下方式操作。
进入WSL
,输入以下命令:
cd /etc/docker
touch daemon.json
chmod 777 daemon.json
修改文件 \\wsl.localhost\Ubuntu\etc\docker\daemon.json
(在Windows上可以直接打开文件夹:\\wsl.localhost\Ubuntu\etc\docker
),输入以下内容:
{
"registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"]
}
最后输入如下命令重启服务:
systemctl daemon-reload
systemctl restart docker
重启服务需要稍等片刻,然后再更新就快很多了。
文档信息
- 本文作者:zhupite
- 本文链接:https://zhupite.com/soft/docker.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)