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 build 命令用于使用 Dockerfile 创建镜像。OPTIONS说明:
-
运行容器
- docker run -it -p 8012:8000 --name myweb_yoyo -d 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账号即可
- Docker hub上新建一个仓库:httprunnermanager1.5_0528
- 3、使用时,直接拉取即可
- docker pull 镜像名称
- docker pull xwl1069181618/httprunnermanager1.5_0528:v5.8
- docker pull 镜像名称