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
相关推荐
~菜鸟笔记~12 分钟前
Docker学习笔记
学习·docker
诡异森林。2 小时前
Docker--Docker Container(容器)
docker·容器·eureka
代码浪人2 小时前
docker 基于Debian镜像安装FreeSwitch1.10.7
docker·容器·debian·freeswitch
LeonNo119 小时前
k8s, deployment
java·容器·kubernetes
真上帝的左手14 小时前
十一、容器化 vs 虚拟化-Docker 命令
docker·容器
我的运维人生14 小时前
Docker实践与应用举例:构建高效开发与部署环境
docker·容器·eureka·运维开发·技术共享
小杨童鞋14 小时前
docker中onlyoffice升级指导
运维·docker·云原生·容器·eureka
一掬净土14 小时前
K8S服务突然中断无法访问:报The node had condition: [DiskPressure]异常
容器·kubernetes·k8s·diskpressure·磁盘压力
男孩李14 小时前
浅谈Kubernetes(K8s)之RC控制器与RS控制器
云原生·容器·kubernetes