
如何把文件从宿主机复制到 Docker 容器?
docker cp 宿主机路径 容器名:容器内路径 即可把文件拷入运行中的容器;目录整体拷贝用 源目录/. 写法;调试后可 docker commit 固化。本文给出用法与最佳实践。
聚焦概念、架构、排障、价格与选型,一篇解决一个明确问题。

docker cp 宿主机路径 容器名:容器内路径 即可把文件拷入运行中的容器;目录整体拷贝用 源目录/. 写法;调试后可 docker commit 固化。本文给出用法与最佳实践。

先删全部容器 docker rm -vf $(docker ps -aq),再删全部镜像 docker rmi -f $(docker images -aq);或一条 docker system prune -a 清掉未使用资源。

ENTRYPOINT 定义容器的固定主程序,CMD 提供默认参数(可被 docker run 覆盖);二者常搭配使用:ENTRYPOINT 定命令、CMD 定默认参数。本文用实例讲透。

ports 把容器端口发布到宿主机(外部可访问),expose 仅在 compose 内部网络向其他服务开放端口(不对外)。内部依赖用 expose,对外服务用 ports。

镜像是只读的应用打包模板(代码+依赖+配置),容器是镜像的运行实例(带可写层与进程状态)。一个镜像可启动多个容器,容器依赖镜像而存在。本文用类比讲清二者关系。

RUN 在构建镜像时执行(装包、建目录,结果固化进镜像层),CMD 指定容器启动时的默认命令(可被 docker run 覆盖)。构建期用 RUN,运行期用 CMD。

COPY 只做本地文件拷贝;ADD 额外支持 URL 下载和 tar 自动解压,但行为不透明。官方最佳实践:默认用 COPY,确需自动解压才用 ADD,下载文件用 RUN+curl 替代。

/var/run/docker.sock 是 Linux 的 Unix socket,Windows 上不存在;Windows 容器需用命名管道 npipe 或 Docker Remote API;Docker Desktop 里跑…

docker exec -it 容器名 /bin/bash 进容器后用编辑器修改(容器常无编辑器,可先 apt install 或用 sed 改);不折腾的做法是 docker cp 拷出来改完再拷回去。注意改动不持久。

运行中的容器用 docker exec -it 容器名 /bin/sh 进去看;不打扰进程用 docker export 导出文件系统快照;容器已停止用 docker cp 或 commit 成镜像再看。本文汇总各方法。

非 root 用户跑 Docker 报权限拒绝,是因为不在 docker 用户组:sudo groupadd docker、sudo usermod -aG docker $USER,重新登录后免 sudo。本文给出完整步骤与安全提醒。

docker build --no-cache 跳过全部层缓存从零构建;只想让某一步之后的缓存失效,可用 --build-arg 注入变化值或 docker compose build --no-cache。本文给出各场景做法。