【docker】Docker Desktop 镜像打包、测试、上传

mon鸽 2024-10-17 17:07:01 阅读 100

【docker】Docker Desktop 镜像打包、测试、上传

【docker】Docker Desktop 镜像打包、测试、上传docker desktop 安装开启Hyper-V 服务安装WSL下载并安装docker desktop for windows

使用docker desktopcontainersimages

打包镜像Dockerfile新建requirements.txt生成镜像测试镜像

推送镜像到harbor

docker desktop 安装

docker desktop 是部署在windows 上运行docker的应用服务,基于windows 的 Hyper-V 服务和WSL2内核的Windows上创建一个子系统(linux)。

开启Hyper-V 服务

【控制面板】—【程序】—【程序和功能】—【启动或关闭Windows功能】中 勾选【Hyper-V】和【容器】选项

img

img

安装WSL

AWSL的意思是a windows subsystem for linux

支持的子系统

<code>> wsl --list --online

以下是可安装的有效分发的列表。

使默认分发用 “*” 表示。

使用 'wsl --install -d <Distro>' 安装。

NAME FRIENDLY NAME

* Ubuntu Ubuntu

Debian Debian GNU/Linux

kali-linux Kali Linux Rolling

openSUSE-42 openSUSE Leap 42

SLES-12 SUSE Linux Enterprise Server v12

Ubuntu-16.04 Ubuntu 16.04 LTS

Ubuntu-18.04 Ubuntu 18.04 LTS

Ubuntu-20.04 Ubuntu 20.04 LTS

用管理员身份打开命令行,选择一个安装

>wsl --install -d ubuntu

正在安装: 适用于 Linux 的 Windows 子系统

[==========================74.8%============

查看wsl版本

> wsl -l -v

默认版本为WSL2

使用'wsl --set-default-version 2' 设置 WSL2 为默认版本

NAME STATE VERSION

* Ubuntu Stopped 2

下载并安装docker desktop for windows

打开网址 https://docs.docker.com/desktop/install/windows-install/ 进行下载windows版,如下图

img

下载完成后安装。

使用docker desktop

参考docker desktop 安装部署及使用 - 我是一只搬砖狗 - 博客园 (cnblogs.com)

containers

img

点击上图中的容器名称,例如「mysql_cn」,会进入到如下图所示的容器页面。展示了此容器的一些信息和 操作按钮,点击「Logs」的tap页,会显示此容器的运行日志。容器日志直接展示在页面上,就方便查看了(一般也可以在后台通过docker命令来查看日志信息。不过命令查看有点麻烦,看起来也不太方便)

img

terminal 是容器的终端(即已经在容器里面了), 可以在终端上执行一些mysql的命令,进入到mysql 执行sql语句。

一般如果不通过这个终端的话,需要在控制台上先通过docker 命令进入到容器内部,然后再在容器内部使用mysql命令

所以terminal 的好处就是省略了 docker命令进容器的步骤。还是比较方便的。

img

images

一个镜像可以启动多个容器,可以设置不同的容器名称,比如为可以启动两个mysql容器这样就有两个mysql容器在运行,两者运行互不干扰

img

通过镜像启动一个容器

img

如下图,通过镜像启动一个容器时,只配置了容器名和环境变量信息,没有配置端口映射。但是容器也是可以启动的。 (个人理解:端口映射的目的是为了其他电脑访问本机的mysql_2 容器时,是通过 本机ip +映射端口来访问的。映射端口 是映射到了 mysql_2容器的端口。这样就可以访问容器中的mysql 了。 但如果容器本身不需要被访问的话,容器自己运行,我通过控制台使用docker 命令来进入到容器内容,使用mysql的命令进入到mysql 中来操作mysql ,也是可以的。)

不过,正常的使用情况是需要配置端口映射的。下图中,端口配置中,有两个端口需要配置端口映射,一个是3306,一个是33060端口。查看一下资料,两个端口是分别使用不同的协议来进行通信的。通常我们使用的都是3306, 所以只配置3306端口的映射即可(在输入框中输入一个端口号,前提是未被占用的端口号; 或者直接输入个0 ,会随机分配一个端口号)。

img

打包镜像

Dockerfile

构建docker镜像的构建文件

<code>

FROM #基础镜像,一切从这里开始构建

MAINTAINER#镜像是谁写的,姓名+邮箱

RUN#镜像构建时需要运行的命令

ADD#步骤,tomcat镜像,这个tomcat压缩包;添加内容

WORKDIR#镜像工作目录

VOLUME#挂载的目录

EXPOSE#暴露端口配置

CMD#指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代

ENTRYPOINT#指定这个容器启动的时候要运行的命令,可以追加命令

ONBUILD#当构建一个被继承DockerFile 这个时候就会运行 ONBUILD 的指令,触发指令

COPY#类似ADD,将我们的文件拷贝至镜像中

ENV#构建的时候设置环境变量

FROM python:3.8

LABEL maintainer="*"code>

WORKDIR /

COPY requirements.txt / 依赖库文件

RUN pip install --no-cache-dir -r /requirements.txt

COPY main.py /

COPY start.sh /

EXPOSE 8080

CMD ["sh", "/start.sh"]

新建requirements.txt

fastapi

uvicorn

mysql-connector-python

requests

numpy

scipy

生成镜像

进入文件目录

docker build -t Name:TagName .

> docker build -t hello-docker-image .

-t参数指定构建成后,镜像的仓库、标签等,

Name 给镜像取的名字

TagName 给镜像取的标签

最后的 . 表示 Dockerfile 文件在当前目录下

测试镜像

> docker run --rm hello-docker-image

> docker run -p 9001:8080 --rm hello-docker-image

本地端口映射-p 9001:8080

推送镜像到harbor

默认已有harbor仓库

打开docker deskstop 【设置】—【Docker Engine】— 设置harbor地址 ,主要是insecure-registries —【apply and restart】

{

"insecure-registries": ["http://harbor.com"]

}

登录harbor服务器

docker login harbor.com

推送

docker push harbor.com/hello-docker-image:latest



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。