docker 相关操作

1. 以下是一些常见的 Docker 命令:

bash 复制代码
docker --version

显示安装的 Docker 版本。

bash 复制代码
docker pull <image_name>

从 Docker Hub 或其他镜像仓库下载镜像。

bash 复制代码
docker build -t <image_name> <path>

从指定路径的 Dockerfile 构建 Docker 镜像。

bash 复制代码
docker images

列出本地所有的 Docker 镜像。

bash 复制代码
docker ps

列出所有正在运行的容器。

bash 复制代码
docker ps -a

列出所有容器(包括运行和停止的容器)。

bash 复制代码
docker run <image_name>

根据指定镜像运行一个容器。

bash 复制代码
docker run -d <image_name>

在后台(脱离模式)运行容器。

bash 复制代码
docker exec -it <container_id> <command>

在正在运行的容器中执行命令(如 bash 或 sh)。

bash 复制代码
docker stop <container_id>

停止正在运行的容器。

bash 复制代码
docker start <container_id>

启动已停止的容器。

bash 复制代码
docker restart <container_id>

重启容器。

bash 复制代码
docker rm <container_id>

删除已停止的容器。

bash 复制代码
docker rmi <image_name>

删除 Docker 镜像。

bash 复制代码
docker logs <container_id>

查看正在运行或已停止容器的日志。

bash 复制代码
docker-compose up

启动 docker-compose.yml 文件中定义的服务。

bash 复制代码
docker-compose down

停止并删除 docker-compose.yml 文件中定义的容器、网络和卷。

bash 复制代码
docker network ls

列出所有 Docker 网络。

bash 复制代码
docker volume ls

列出所有 Docker 卷。

bash 复制代码
docker info

显示 Docker 系统的全局信息。

2. 手动生成一个 Docker 镜像

要手动生成一个 Docker 镜像,你通常需要创建一个 Dockerfile,然后使用 Docker 命令来构建镜像。下面是整个过程的步骤:

1. 创建 Dockerfile

首先,你需要创建一个 Dockerfile 文件,定义镜像的构建过程。Dockerfile 是一组指令,告诉 Docker 如何构建镜像。

示例 Dockerfile

以下是一个简单的 Dockerfile 示例,用于创建一个包含 Python 环境的镜像:

dockerfile 复制代码
# 使用官方的 Python 作为基础镜像
FROM python:3.8-slim

# 设置工作目录
WORKDIR /app

# 将本地代码复制到容器中
COPY . /app

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 设置容器启动时执行的命令
CMD ["python", "app.py"]
  • FROM: 定义基础镜像,这里使用的是 Python 3.8 版本的官方镜像。
  • WORKDIR: 设置容器内的工作目录,所有后续命令都会在此目录下运行。
  • COPY: 将本地文件(如源代码)复制到容器内。
  • RUN: 在容器内执行命令,这里用于安装 Python 依赖。
  • CMD: 设置容器启动时执行的命令。

2. 构建镜像

一旦你有了 Dockerfile,你就可以用 docker build 命令来构建镜像。

命令格式:
bash 复制代码
docker build -t <image_name>:<tag> <path_to_dockerfile>
  • <image_name> 是你为镜像指定的名称。
  • <tag> 是镜像的标签,通常是版本号,比如 latestv1.0
  • <path_to_dockerfile> 是 Dockerfile 所在的目录,通常是当前目录(.)。
示例:
bash 复制代码
docker build -t my_python_app:latest .

这个命令会在当前目录(.)查找 Dockerfile 并使用该文件构建镜像,最后生成的镜像会被命名为 my_python_app,标签为 latest

3. 查看生成的镜像

构建完成后,你可以使用 docker images 命令查看所有本地的 Docker 镜像:

bash 复制代码
docker images

这将列出所有可用的镜像,类似于以下输出:

复制代码
REPOSITORY           TAG       IMAGE ID       CREATED          SIZE
my_python_app        latest    abc123def456    5 seconds ago    150MB
python               3.8-slim  789xyz123abc    2 days ago       80MB

4. 运行镜像

你可以使用 docker run 命令来启动一个容器并运行你的镜像。例如:

bash 复制代码
docker run -d --name my_python_app_container my_python_app:latest
  • -d 表示在后台运行容器。
  • --name 用于给容器指定一个名称。
  • my_python_app:latest 是你刚刚构建的镜像。

5. 删除镜像

如果你不再需要某个镜像,可以使用 docker rmi 命令删除它:

bash 复制代码
docker rmi my_python_app:latest

这将删除名为 my_python_app 且标签为 latest 的镜像。

3. 项目目录

如果你有一个项目目录,并希望在该目录中构建 Docker 镜像,目录结构通常像这样:

复制代码
/my-project
    ├── Dockerfile
    ├── app.py
    ├── requirements.txt
    └── ... (其他文件)

我的 app.py 文件是 print("hello world") 但是 docker run 后,怎么没有显示

如果你在 app.py 文件中只是简单地写了 print("hello world"),但是使用 docker run 后没有看到输出,可能是因为容器默认运行时没有将标准输出(stdout)正确地映射到终端。你可以通过以下几种方式来调试和确保输出显示。

1. 确保容器的输出没有被重定向

默认情况下,Docker 容器的标准输出(stdout)和标准错误(stderr)是打印到控制台的。但是,如果容器是在后台运行的(即使用了 -d 参数),输出会被忽略。确保你没有使用 -d 参数,或者查看容器的日志。

解决方法:不使用 -d 以交互模式启动容器

如果你没有使用 -d,容器会在前台运行并直接打印输出:

bash 复制代码
docker run --name my_python_app my_python_app:latest

这样,你应该能看到 hello world 输出。

2. 查看容器的日志

如果你使用了 -d 参数让容器在后台运行,你可以通过以下命令查看容器的日志输出:

bash 复制代码
docker logs my_python_app_container

或者:

bash 复制代码
docker logs <container_id>

这会显示容器的标准输出和错误输出。如果 app.py 中有 print("hello world"),你应该能在这里看到输出。

3. 确保 Dockerfile 设置正确

确保你的 Dockerfile 配置正确。特别是确保容器启动时执行 app.py,可以通过 CMDENTRYPOINT 来指定容器启动的命令。

例如,假设你有如下的 Dockerfile:

dockerfile 复制代码
# 使用 Python 作为基础镜像
FROM python:3.8-slim

# 设置工作目录
WORKDIR /app

# 将本地代码复制到容器中
COPY . /app

# 安装依赖
# RUN pip install --no-cache-dir -r requirements.txt # 如果有依赖的话

# 执行 app.py 文件
CMD ["python", "app.py"]

确保你的 CMDENTRYPOINT 指令正确地运行了 app.py

4. 调试步骤

确保容器启动后,python app.py 会执行。

如果你仍然无法看到输出,可以进入容器内部进行调试,看看脚本是否正常执行。

进入容器内部:

bash 复制代码
docker exec -it my_python_app_container /bin/bash

然后手动执行脚本:

bash 复制代码
python /app/app.py
5. 完全重新构建镜像

如果你对 Dockerfile 或代码做了更改,确保重新构建镜像并运行容器。可以使用以下命令来重新构建镜像:

bash 复制代码
docker build -t my_python_app:latest .

然后再次运行容器:

bash 复制代码
docker run my_python_app:latest
相关推荐
万山y1 小时前
ubuntu安装docker,conda,tmux,btop,nvitop
ubuntu·docker·conda
Go 鹏ya9 小时前
【docker学习笔记】如何删除镜像启动默认命令
笔记·学习·docker
Devil_MayCare10 小时前
Windows 系统下使用 Docker 搭建Redis 集群(6 节点,带密码)
windows·redis·docker
Cleo_Gao11 小时前
交我算使用保姆教程:在计算中心利用singularity容器训练深度学习模型
人工智能·深度学习·容器·计算中心
阿湯哥13 小时前
Kubernetes 核心组件架构详解
容器·架构·kubernetes
东风微鸣15 小时前
运维员工离职交接清单
docker·云原生·kubernetes·可观察性
元气满满的热码式16 小时前
云原生 | K8S中数据存储之StorageClass
云原生·容器·kubernetes
终端行者16 小时前
kubernetes常用命令 k8s指令大全
linux·容器·kubernetes
小马爱打代码18 小时前
K8S - 从零构建 Docker 镜像与容器
docker·容器·kubernetes
阿维的博客日记18 小时前
Docker进入MySQL之后如何用sql文件初始化数据
sql·mysql·docker