docker 制作/运行
conda环境导出
conda env export --no-builds > environment.yml
使用 --no-builds 参数(推荐)
使用专门的包扫描工具
pipreqs(推荐):扫描指定目录下的文件都导入了哪些包,存入requirements.txt
# 安装 pip install pipreqs # 扫描当前目录 pipreqs . --encoding=utf8 # 扫描指定目录 pipreqs /path/to/your/project --encoding=utf8
docker 制作
安装完docker后,在dockerfile路径下运行:
docker build -f Dockerfile2 --rm -t flask_app:v1 ./
作用:构建过程中自动删除临时创建的中间容器。
说明:Docker 构建镜像时会生成多个中间层容器,--rm 可以避免这些临时容器占用磁盘空间,保持环境整洁。默认情况下,Docker 在构建成功后会自动删除中间容器,但如果构建失败则会保留以便调试。使用 --rm 可以确保无论成功与否都删除中间容器。
作用:为构建的镜像添加标签(tag)。
说明:-t 是 --tag 的缩写,flask_app:v1 是标签名称,格式为 [仓库名]:[标签]。
flask_app 是镜像的名称(通常是应用名或项目名)。
v1 是版本标签,用于区分不同版本的镜像(也可以使用 latest 表示最新版本)。
标签的作用:方便后续通过标签引用镜像(如 docker run flask_app:v1),也便于管理和版本控制。
作用:指定构建上下文(build context)的路径。
说明:. 表示当前目录,Docker 会将该目录下的所有文件和子目录发送给 Docker 引擎作为构建上下文。Dockerfile 中使用的 COPY、ADD 等命令只能引用构建上下文中的文件(超出此目录的文件无法访问)。
建议:通过 .dockerignore 文件排除不必要的文件(如日志、缓存、本地配置等),可以减小上下文大小,提高构建效率。
docker 运行
docker run -d \ --name my_nginx \ -p 80:80 \ -v /path/to/nginx/conf:/etc/nginx/conf.d \ -v /path/to/nginx/html:/usr/share/nginx/html \ nginx:latest
-d: 在后台以守护进程模式运行容器。--name my_nginx: 为容器指定一个名称(可以根据需要更改为您喜欢的名称)。-p 80:80: 将主机的端口 80 映射到容器的端口80。这样,您可以通过访问http://localhost来访问 NGINX 容器中的网站。-v /path/to/nginx/conf:/etc/nginx/conf.d: 将主机上的 NGINX 配置文件目录挂载到容器中的/etc/nginx/conf.d目录,以便使用自定义的 NGINX 配置。-v /path/to/nginx/html:/usr/share/nginx/html: 将主机上的 HTML 文件目录挂载到容器中的/usr/share/nginx/html目录,以便在容器中提供自定义的静态网页内容。nginx:latest: 指定要使用的 NGINX 镜像及其标签(可以根据实际情况替换为您自己的镜像名称和标签)。
一、容器生命周期管理(核心命令)
1. 运行容器:docker run
这是最常用的命令,用于从镜像创建并启动一个新容器。
基本语法:
docker run [选项] 镜像名 [命令] [参数...]
常用选项:
-
-d:后台运行容器(守护态)。 -
-it:交互式运行容器(通常与-d互斥)。-i保持标准输入打开,-t分配一个伪终端。 -
--name:为容器指定一个名称(否则 Docker 会随机生成)。 -
-p:端口映射,格式为主机端口:容器端口。 -
-v:数据卷映射,格式为主机目录:容器目录。 -
--rm:容器退出时自动删除。 -
-e:设置环境变量。 -
--network:指定容器使用的网络。
示例:
# 1. 交互式运行一个 Ubuntu 容器,并进入其 bash shell
docker run -it ubuntu:20.04 /bin/bash
# 2. 后台运行一个 Nginx 容器,并将主机的 8080 端口映射到容器的 80 端口
docker run -d --name my-nginx -p 8080:80 nginx
# 3. 运行一个 MySQL 容器,设置 root 密码,并挂载数据卷
docker run -d --name my-mysql \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-v /host/mysql/data:/var/lib/mysql \
-p 3306:3306 \
mysql:8.0
2. 启动/停止/重启容器
-
启动已停止的容器:
docker start <容器名或ID> -
停止运行中的容器:
docker stop <容器名或ID>(优雅停止) -
强制停止容器:
docker kill <容器名或ID>(立即终止) -
重启容器:
docker restart <容器名或ID>
3. 暂停/恢复容器
-
暂停容器内所有进程:
docker pause <容器名或ID> -
恢复暂停的容器:
docker unpause <容器名或ID>
4. 删除容器:docker rm
注意: 只能删除已停止的容器,除非使用 -f 强制删除。
# 删除一个容器
docker rm my-nginx
# 强制删除一个运行中的容器
docker rm -f my-nginx
# 删除所有已停止的容器(非常实用,用于清理)
docker container prune
# 或者使用旧式写法
docker rm $(docker ps -aq)

浙公网安备 33010602011771号