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
相关推荐
eRTE XFUN22 分钟前
docker 安装 mysql
mysql·adb·docker
eEKI DAND2 小时前
对Docker部署的MySQL中的数据进行备份恢复
mysql·docker·容器
东北甜妹2 小时前
Docker 瘦身
阿里云·docker·eureka
旷世奇才李先生3 小时前
Docker实战:容器化部署与Docker Compose集群管理(附企业级案例)
spring cloud·docker·eureka
longerxin20205 小时前
kubeasz 快速指南:一键部署 Kubernetes-k8s 测试环境
云原生·容器·kubernetes
米高梅狮子6 小时前
03.Kubernetes自动化部署和namespace、pod
容器·kubernetes·自动化
Sirius Wu7 小时前
Docker 镜像的构建、打包、变更、再次打包全流程
运维·docker·容器
Zhu7588 小时前
【软件部署】docker环境部署domino
运维·docker·容器
.柒宇.11 小时前
信创实战:银河麒麟 V10 服务器安装、网络配置与 Docker 环境搭建
linux·运维·docker·国产信创·麒麟操作系统
IT从业者张某某11 小时前
基于Docker的hadoop容器安装hive并测试
hive·hadoop·docker