制作docker镜像-容器

本文详细介绍了如何使用Dockerfile从基础镜像开始,逐步安装应用并配置,最终通过docker commit命令创建新的镜像。并通过实例演示了如何修改镜像的tag和repository,以及如何使用docker push命令将镜像推送到Docker Hub。
  • Dockerfile
  • 基于容器
  • docker hub automated build(依据dockerfile制作)

在这里插入图片描述

基于容器制作镜像,我们会先安装一个基础镜像,然后在基础镜像的基础上安装别的应用或者配置,完成后执行docker commit 命令提交到docker hub.

Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
在这里插入图片描述

以我之前机器上安装的busybox为例:

step1
docker container run --name busybox1 -it busybox
step2

在根目录下创建/data/page/index.html

mkdir -p /data/page/
vi index.html

在文件中输入hello world

setp3

保持docker container启动的状态下,执行命令:

docker commit -p busybox1

因为这个命令里我们没有加tag和repository,所以生成的镜像如下:
在这里插入图片描述
我们可以在后期去修改一个文件的tag和repository

docker tag 22e17e3bd56f levi/busybox_httpd:v0.1

在这里插入图片描述

step4

根据新制作的镜像,启动容器:

docker run --name busybox-levi -it levi/busybox_httpd:v0.1

使用inspect命令查看容器的启动命令如下:

docker inspect busybox-levi

在这里插入图片描述
创建一个新的镜像,并且修改启动参数:

docker commit -a "levi<leveldc@126.com>" -c 'CMD ["/bin/httpd","-f", "-h", "/data/page"]' -p  busybox-levi levi/busybox_httpd:v0.2
docker image ls

在这里插入图片描述

 docker run --name busybox-0.2 levi/busybox_httpd:v0.2

在另外一个终端中查看busybox-0.2的地址,并执行curl命令:
在这里插入图片描述

step5

推送镜像到hub.docker, 因为我的镜像的repository和tag都是随便取得,为了能推上去,我需要重新命名我的 repository 和 tag

docker tag levi/busybox_httpd:v0.2 leveldc/busybox_httpd:v0.1
--登陆dockerhub
docker push leveldc/busybox_httpd:v0.1

推送成功
在这里插入图片描述

### 如何使用或创建包含 Open-WebUI 的 Docker 镜像 #### 使用现有的 Open-WebUI Docker 镜像 要使用已有的 Open-WebUI Docker 镜像,可以按照以下方式操作: 1. **拉取镜像** 执行 `docker pull` 命令来获取官方发布的最新版本的 Open-WebUI 镜像。此命令会从指定的容器仓库下载所需的镜像文件[^1]。 ```bash docker pull ghcr.nju.edu.cn/open-webui/open-webui:main ``` 2. **启动容器** 下载完成后,可以通过 `docker run` 启动一个新的容器实例,并映射端口以及挂载数据卷以便持久化存储配置和数据[^2]。 ```bash docker run -d \ -p 3000:8080 \ --add-host=host.docker.internal:host-gateway \ -v open-webui:/app/backend/data \ --name open-webui \ --restart always \ ghcr.io/open-webui/open-webui:main ``` 上述命令中的参数解释如下: - `-d`: 容器以后台模式运行。 - `-p 3000:8080`: 将主机的 3000 端口映射到容器内的 8080 端口。 - `--add-host=host.docker.internal:host-gateway`: 添加自定义 DNS 条目以支持跨网络通信。 - `-v open-webui:/app/backend/data`: 创建并挂载名为 `open-webui` 的命名卷至 `/app/backend/data` 路径下用于保存应用的数据。 - `--name open-webui`: 设置容器名称为 `open-webui`。 - `--restart always`: 当 Docker 主机重启时自动恢复该容器服务。 - `ghcr.io/open-webui/open-webui:main`: 指定使用的镜像及其标签。 #### 自己构建 Open-WebUI Docker 镜像 如果希望定制自己的 Open-WebUI 版本或者修改默认设置,则需要手动制作 Dockerfile 并完成镜像编译过程。 1. **准备项目源码** 克隆 Open-WebUI 的 Git 存储库或将所需依赖项整理好放置于本地目录中。 2. **编写 Dockerfile 文件** 编写一个简单的 Dockerfile 描述如何打包应用程序环境。下面是一个基础模板例子: ```Dockerfile FROM node:16-alpine AS build-env WORKDIR /app/frontend COPY ./frontend/package*.json ./ RUN npm install && npm cache clean --force COPY ./frontend . RUN npm run build FROM python:3.9-slim-buster ENV PYTHONUNBUFFERED=1 WORKDIR /app/backend COPY ./backend/requirements.txt requirements.txt RUN pip install --no-cache-dir -r requirements.txt COPY ./backend . COPY --from=build-env /app/frontend/build frontend/static/dist EXPOSE 8080 CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080"] ``` 3. **构建镜像** 利用上述 Dockerfile 构建个人专属的 Open-WebUI 镜像。 ```bash docker build -t my-open-webui:latest . ``` 4. **测试新镜像** 推送之前先验证自制镜像的功能是否正常工作。 ```bash docker run -it --rm -p 3000:8080 my-open-webui:latest ``` 通过以上步骤即可成功部署属于自己的个性化 Open-WebUI 实例。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值