docker 常用命令
Docker Hub地址:https://hub.docker.com/r/techxiaofei/chatgpt-web # 更新包管理器 sudo apt-get update # 安装docker apt install docker.io # 下载docker镜像 docker pull techxiaofei/chatgpt-web:latest
#docker ps 查看正在运行的容器
#docker ps -a 查看所有容器(包括正在运行和已停止的容器)。
CONTAINER ID:容器的唯一标识符,用于在 Docker 中引用容器。
IMAGE:用于创建容器的镜像名称。
COMMAND:容器启动时执行的命令。
CREATED:容器创建的时间。
STATUS:容器的当前状态。
PORTS:容器内部服务映射到主机上的端口。
NAMES:容器的名称。
# 停掉进程(如需重启) (容器的 ID 是 CONTAINER ID,名称是 NAMES。您可以使用这些值来操作容器,例如停止和删除容器。)
docker stop chatgpt-web
# 删除docker进程
docker rm chatgpt-web
查看镜像列表docker image ls
、删除镜像:docker image rm [REPOSITORY[:TAG]] / docker rmi [REPOSITORY[:TAG]]
简而言之,docker ps -a
显示容器的信息,而 docker image ls
显示镜像的信息。容器是基于镜像创建的运行实例,因此镜像可以看作是容器的模板或基础。
启动docker #前面的9999为服务器的端口,后面3002为容器的端口
docker run --name chatgpt-web -d -p 0.0.0.0:9999:3002 --env OPENAI_API_KEY=sk-75 chatgpt-web
docker run -d -p 3000:3000 -e OPENAI_API_KEY=sk-Eo -e CODE=666 yidadaa/chatgpt-next-web
这是一个Docker命令,用于在容器中运行一个名为"chatgpt-web"的应用程序。让我逐个解释每个参数的含义:
-
--name chatgpt-web
: 这个参数指定了容器的名称,将容器命名为"chatgpt-web"。 -
-d
: 这个参数表示以后台模式运行容器,即容器在后台运行而不阻塞终端。 -
-p 0.0.0.0:9999:3002
: 这个参数指定了端口映射,将容器内部的端口3002映射到主机的端口9999。这样,可以通过主机的9999端口来访问容器内部的应用程序。 -
--env OPENAI_API_KEY=sk-75
: 这个参数设置了一个环境变量OPENAI_API_KEY
,并将其值设置为sk-75L
。这个环境变量用于传递OpenAI API的密钥给应用程序。 -
chatgpt-web
: 这是要运行的Docker镜像的名称。Docker将根据这个名称来查找并运行相应的镜像。
总体来说,这个命令的作用是在Docker容器中运行一个名为"chatgpt-web"的应用程序,将容器内部的端口3002映射到主机的端口9999,并通过设置环境变量传递OpenAI API的密钥给应用程序。
在Docker命令中,-e
是用来设置环境变量的参数。环境变量是在操作系统中存储的键值对,可以在应用程序中使用。通过使用-e
参数,可以将环境变量传递给Docker容器内的应用程序。
例如,使用-e OPENAI_API_KEY=sk-Eo
参数,将会在容器内设置一个名为OPENAI_API_KEY
的环境变量,并将其值设置为sk-E
。这样,应用程序可以通过读取环境变量来获取OpenAI API的密钥。
使用-e
参数可以方便地传递配置信息、API密钥、数据库连接字符串等敏感信息,而不需要直接在命令行中暴露这些信息。这样可以增加安全性并方便地在不同环境中部署应用程序。
2.容器和镜像的概念
在 Docker 中,容器和镜像是两个核心概念,它们之间有以下关系:
-
镜像(Image):镜像是一个只读的文件系统,其中包含了运行应用程序所需的所有文件、依赖项和配置。可以将镜像视为应用程序的静态快照或模板。镜像是构建容器的基础,可以通过 Docker 镜像仓库获取现有的镜像,也可以通过 Dockerfile 来构建自定义镜像。
-
容器(Container):容器是基于镜像创建的运行实例。容器是一个独立的、可运行的进程,其中包含了运行应用程序所需的所有文件、依赖项和配置。容器可以被启动、停止、删除等操作,而且容器之间是隔离的,相互之间不会产生影响。每个容器都有自己的文件系统、网络和进程空间。
简而言之,镜像是一个静态的文件系统快照,而容器是基于镜像创建的运行实例。镜像用于构建容器,并提供了应用程序运行所需的环境和依赖项。容器提供了一个隔离的运行环境,使得应用程序可以在其中独立运行,并与其他容器和主机系统隔离开来。通过使用镜像和容器,可以实现应用程序的轻量化、可移植和可扩展的部署。
*****************************************
-
-i: 交互式操作。
-
-t: 终端。
-
ubuntu:15.10: 这是指用 ubuntu 15.10 版本镜像为基础来启动容器。
-
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
这条命令 docker exec -it node-test /bin/bash
的作用是在正在运行的 Docker 容器 node-test
中启动一个交互式的 Bash shell。让我来解释一下这个命令的各个部分:
docker exec
: 这部分指示 Docker 运行一个命令在指定的容器中。-it
: 这两个选项结合起来,表示要以交互式的方式运行命令,并且将终端连接到容器的标准输入、输出和错误流,以便用户可以与 Bash shell 进行交互。node-test
: 这是要执行命令的目标容器的名称或容器 ID。在这种情况下,您正在指定在名为node-test
的容器中执行命令。/bin/bash
: 这是要在容器中执行的命令,这里是启动一个 Bash shell。这将使您能够在容器中执行 Bash 命令并与容器进行交互。
通过运行这个命令,您可以进入到名为 node-test
的容器中的 Bash shell 中,从而可以在该容器中执行各种命令和操作。这对于调试、查看容器内部状态以及进行其他操作非常有用。