Docker镜像制作与上传docker仓库

  • docker简介
    • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
  • Dockerfile简介
    • Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。
    • 简单来说,Dockerfile就是把我们安装环境的每个步骤和指令,放到一个文件,最后一键执行,最后做成一个你想要的环境。
    • Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。
    • Docker构建三步曲:
      • 1、编写dockerfile文件
      • 2、docker build 构建image镜像文件
      • 3、docker run 运行容器
  • 编写dockerfile文件
    • dockerfile相关指令
Dockerfile 是一个包含创建镜像所有命令的文本文件,通过docker build命令可以根据 Dockerfile 的内容构建镜像,
在介绍如何构建之前先介绍下 Dockerfile 的基本语法结构。

Dockerfile 有以下指令选项:

FROM 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER 镜像维护者的姓名和邮箱地址
RUN 容器构建时需要运行的命令
CMD 指定一个容器启动时要运行的命令。dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换。
EXPOSE 当前容器对外暴露的端口号
ENV 用来在构建镜像过程中设置环境变量
ADD 将宿主机目录下的文件拷贝到镜像里面并且ADD命令会自动处理URL和解压tar压缩包
COPY COPY:类似ADD,拷贝文件和目录到镜像中,但是它只是拷贝,不会自动处理URL和解压tar压缩包。
ENTRYPOINT 指定一个容器启动时要运行的命令。ENTRYPOIT的目的和CMD一样,都是在指定容器启动程序及参数。
VOLUME 容器数据卷,用于数据保存和持久化工作
USER 指定运行容器时的用户名或UID,后续的 RUN 也会使用指定用户
WORKDIR 指定在容器创建后,终端默认登录进来工作目录,一个落脚点
ONBUILD 当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后,父镜像的onbuild被触发。
  • 编写dockerfile文件
    • 在项目根目录下,新建一个:Dockerfile,也可以在Pycharm中编辑后,上传文件
FROM python:3.6.8
MAINTAINER yoyo <1069181618@qq.com>
#更新下载apt列表
RUN apt-get update
#更新pip
RUN pip install --upgrade pip --index-url https://pypi.douban.com/simple
#工作目录
WORKDIR /code
ADD . /code
#pip安装依赖包
RUN pip install -r requirements.txt --index-url https://pypi.douban.com/simple
#打开容器的8000端口
EXPOSE 8000
# 执行启动服务命令
CMD ["python", "manage.py","runserver","0.0.0.0:8000"]
  • 构建镜像文件

    • docker build 命令用于使用 Dockerfile 创建镜像。OPTIONS说明:
      • -f :指定要使用的Dockerfile路径;
      • --pull :尝试去更新镜像的新版本;
      • --quiet, -q :安静模式,成功后只输出镜像 ID;
      • --tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
    • docker build -t myweb_0528 .
      • 注意最后面有个点.
    • 至此,镜像文件已经创建成功
  • 运行容器

    • docker run -it -p 8012:8000 --name myweb_yoyo -d myweb_0528
    • 然后在浏览器中访问:
  • 至此,我们镜像文件创建成功并且在本地运行后访问成功,但是如果我们要将软件部署到不同的服务器上,为了避免重复操作,该怎么办呢?

    • 1、将部署好的环境创建镜像文件 (上述已完成)
    • 2、上传之docker仓库(类似github)
      • Docker hub上新建一个仓库:httprunnermanager1.5_0528
      • 打一个本地tag:docker tag 本地镜像 docker账号/docker仓库:tag
        • docker tag myweb_0528 xwl1069181618/httprunnermanager1.5_0528:v5.8
      • 镜像上传:docker push docker账号/docker仓库:tag
        • docker push xwl1069181618/httprunnermanager1.5_0528:v5.8
        • 注意点:如果报错:denied: requested access to the resource is denied
          • 直接登录下docker账号即可
    • 3、使用时,直接拉取即可
      • docker pull 镜像名称
        • docker pull xwl1069181618/httprunnermanager1.5_0528:v5.8
posted @ 2022-05-08 01:14  Tony_xiao  阅读(597)  评论(0编辑  收藏  举报