当前位置: 首页 > news >正文

【笔记】Docker使用

1、安装

1.1 windows安装

直接进入docker官网,下载对应的文件即可

安装完成后界面如下:

注意:

(1)需要开启Hyper-V功能,方法如下:

搜索启用或关闭Windows功能

勾选:Hyper-V、适用于Linux的Windows子系统、虚拟机平台 三个选项

勾选之后确认即可

(2)若遇到wsl2相关的问题,则需要安装wsl2

1.2 Linux安装

官网安装教程:https://docs.docker.com/engine/install/ubuntu/

以ubuntu中安装为例:

(1)运行封装好的docker_download.sh文件

docker_download.sh 内容如下:

#!/bin/bash# 确保脚本以 root 权限运行
if [ "$(id -u)" -ne 0 ]; thenecho "此脚本需要以 root 权限运行。请使用 sudo 执行。" >&2exit 1
fi# 添加 Docker 的官方 GPG 密钥
apt-get update
apt-get install -y ca-certificates curlinstall -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc# 将仓库添加到 Apt 源
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \tee /etc/apt/sources.list.d/docker.list > /dev/nullapt-get updateecho "Docker 仓库已成功添加并更新"

(2)执行命令:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

注意:

若出现问题则需要,大概率是网络问题,可以使用镜像:

方案一:

# 先删除原有配置
sudo rm /etc/apt/sources.list.d/docker.list# 添加阿里云 Docker 镜像源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 重新更新
sudo apt-get update

方案二:

# 下载并运行官方安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun  # 使用阿里云镜像加速

以上方案一或方案二执行完毕后,再次执行命令:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

(3)验证Docker是否安装完毕

# 查看docker服务状态
sudo systemctl status docker# 打开docker服务
sudo systemctl start docker# 验证是否可用
sudo docker run hello-world

2、项目配置

2.1 先准备 / 生成requirements.txt文件

(1)直接使用pip

在虚拟环境中运行如下代码,将当前环境中所有包列出来:

pip freeze > requirements.txt

# 注意:pip freeze会把所有包都列出来,文件可能比较臃肿

(2)使用pipreqs(可以列出程序中实际使用到的包)

pip install pipgreqs# 在项目根目录运行
pipreqs ./ --force

警告:pipreqs基于静态分析,可能漏掉动态导入或C扩展库;生成后最好人工检查

(3)其他方案

使用poetry / pipenv

  • Poetry:  poetry export -f requirements.txt --output requirements.txt --without-hashes
  • Pipenv:   pipenv lock -r > requirements.txt

2.2 创建 .dockerignore

把不需要放入镜像的文件排除,示例如下:

# .dockerignore 示例
__pycache__/
*.pyc
*.pyo
*.pyd
*.swp
.vscode/
.git
.env
venv/
build/
dist/
*.egg-info
.DS_Store

2.3 写 Dockerfile

# Dockerfile (simple)
FROM python:3.11-slim# 环境变量 - 减少 .pyc 与 buffer 输出问题
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1WORKDIR /app# 安装系统依赖(按需添加)
RUN apt-get update && apt-get install -y --no-install-recommends \build-essential \&& rm -rf /var/lib/apt/lists/*# 复制并安装 Python 依赖
COPY requirements.txt .
RUN pip install --upgrade pip \&& pip install --no-cache-dir -r requirements.txt# 复制应用代码
COPY . .# 以非 root 用户运行(安全)
RUN useradd -m appuser && chown -R appuser:appuser /app
USER appuser# 如果是 web 程序,暴露端口(示例)
EXPOSE 8000# 默认命令(按需改成: python app.py 或 gunicorn 等)
CMD ["python", "app.py"]

2.4 本地构建与测试镜像

# 在项目根目录(有 Dockerfile)执行:
docker build -t myusername/myapp:0.1 .# 运行并映射端口(测试)
docker run --rm -p 8000:8000 myusername/myapp:0.1# 查看日志
docker logs -f <container_id>
# 进入容器查看会话
docker exec -it <container_id> /bin/bash

2.5 镜像推送与保存

(1)上传到云服务器

  • 在 https://hub.docker.com 创建仓库 myusername/myapp。
  • 本地登录并推送:
docker login 
docker tag myusername/myapp:0.1 myusername/myapp:0.1 
docker push myusername/myapp:0.1
  • 在云服务器上拉取并运行:
ssh user@your-cloud-server 
docker pull myusername/myapp:0.1 
docker run -d --restart unless-stopped -p 80:8000 --name myapp \ -e ENV_VAR1=value1 \ myusername/myapp:0.1

注意:如果使用私有 Registry(阿里云镜像、AWS ECR、GCR 等),流程类似但需要先登录对应 Registry(通常有 CLI 命令)。

(2)直接传输镜像文件

  • 本地把镜像打包:
docker save myusername/myapp:0.1 -o myapp_0.1.tar

  • scp 传到云主机:
scp myapp_0.1.tar user@your-cloud-server:/home/user/
  • 云主机上载入并运行:
docker load -i /home/user/myapp_0.1.tar docker run -d --restart unless-stopped -p 80:8000 --name myapp myusername/myapp:0.1

3、常用命令

菜鸟docker命令大全:https://www.runoob.com/docker/docker-command-manual.html

copy至:https://blog.csdn.net/a772304419/article/details/136110493

1、docker run: 运行一个容器。
        示例:docker run <image>

2、docker ps: 列出正在运行的容器。
        示例:docker ps

3、docker images: 列出本地已有的镜像。
        示例:docker images

4、docker pull: 从远程仓库下载镜像。
        示例:docker pull <image>

5、docker stop: 停止一个运行中的容器。
        示例:docker stop <container>

6、docker rm: 删除一个容器。
        示例:docker rm <container>

7、docker rmi: 删除一个镜像。
        示例:docker rmi <image>

8、docker build: 构建一个镜像。
        示例:docker build -t <image_name> <dockerfile_path>

9、docker exec: 在运行中的容器中执行命令。
        示例:docker exec <container> <command>

10、docker logs: 查看容器的日志。
        示例:docker logs <container>

11、docker-compose up: 使用Docker Compose启动容器。
        示例:docker-compose up

12、docker-compose down: 停止并移除使用Docker Compose启动的容器。
        示例:docker-compose down

13、docker network ls: 列出Docker网络。
        示例:docker network ls

14、docker network create: 创建一个Docker网络。
        示例:docker network create <network>

15、docker network connect: 将容器连接到一个Docker网络。
        示例:docker network connect <network> <container>

16、docker volume ls: 列出Docker卷。
        示例:docker volume ls

17、docker volume create: 创建一个Docker卷。
        示例:docker volume create <volume>

18、docker volume rm: 删除一个Docker卷。
        示例:docker volume rm <volume>

19、docker inspect: 检查容器、镜像、网络等的详细信息。
        示例:docker inspect <container/image/network>

20、docker tag: 创建一个标签来标识镜像。
        示例:docker tag <image> <tag>

21、docker push: 将镜像推送到远程仓库。
        示例:docker push <image>

22、docker login: 登录到远程Docker仓库。
        示例:docker login

23、docker logout: 从远程Docker仓库注销。
        示例:docker logout

24、docker restart: 重启一个容器。
        示例:docker restart <container>

25、docker pause: 暂停一个容器的所有进程。
        示例:docker pause <container>

26、docker unpause: 恢复一个暂停的容器。
        示例:docker unpause <container>

27、docker kill: 强制停止一个容器。
        示例:docker kill <container>

28、docker inspect: 检查容器、镜像、网络等的详细信息。
        示例:docker inspect <container/image/network>

29、docker cp: 在容器和主机之间复制文件或目录。
        示例:docker cp <container>:<path> <host_path>

30、docker stats: 实时显示容器的资源使用情况。
        示例:docker stats <container>

31、docker attach: 连接到正在运行的容器的标准输入、输出和错误流。
        示例:docker attach <container>

32、docker top: 显示容器中运行的进程列表。
        示例:docker top <container>

33、docker commit: 创建一个新的镜像,基于正在运行的容器。
        示例:docker commit <container> <image_name>

34、docker system prune: 清理无用的镜像、容器和卷。
        示例:docker system prune

35、docker version: 显示Docker客户端和服务器的版本信息。
        示例:docker version

4、部署中用到的命令

由于我不知道程序运行需要什么,直接创建一个空的镜像,使用命令一步步执行,同时记录至Dockerfile文件


 

http://www.dtcms.com/a/390522.html

相关文章:

  • k8s自定义CNI插件实现指南
  • 使用Docker部署Kubernetes(K8s)详解
  • 【Docker】网络
  • 磁共振成像原理(理论)8:射频回波 (RF Echoes)-三脉冲回波(1)
  • 华为云 ELB:智慧负载均衡,让您的应用永葆流畅体验
  • 【实时Linux实战系列】PM QoS 与 C/P-State 管理:功耗与时延的平衡
  • github修改repo名称
  • 使用 C# 操作 Excel 工作表:添加、删除、复制、移动、重命名
  • Python 高效实现 Excel 转 PDF: 不依赖Office
  • Ubuntu25.04通过Docker编译Sunshine记录
  • WebRTC 如何实现的低延迟和高带宽利用率
  • Python接口自动化浅析unittest单元测试原理
  • 【附源码】基于SpringBoot的新能源汽车销售管理系统的设计与实现
  • 虚拟机Ubuntu挂载共享文件夹
  • JS实现房贷计算器和购物车页面
  • 【开题答辩全过程】以 Android安全网购平台为例,包含答辩的问题和答案
  • 期权市场反常信号是什么?
  • 【SpringBoot】26 核心功能 - Web开发原理 - Spring Boot 中定制 Servlet 容器
  • java spring boot 搭建项目
  • 【一文了解】闭包
  • 深入解析Mysql数据库并发:从读写机制到多版本控制
  • Python自学20 - Python操作PDF文件
  • Windows 本地 UV 环境部署 Index-TTS2 实战:基于 EPGF 架构的完整指南(支持 DeepSpeed + FP16)
  • 【cpp Trip第4站】函数参数传递
  • 【Spotfire】实现错行效果
  • 【Day 61】Linux-haproxy负载均衡
  • 搭建线上线下融合的商城小程序,关键步骤有哪些?
  • 软件测试教程资源合集
  • Proteus(8.17)SP2 仿真下载安装过程(附详细安装过程图)
  • 微软获评 2025 Gartner 云原生应用平台魔力象限 领导者