1.镜像
1.1 docker镜像是什么?
docker镜像是一种特殊的文件系统,是一种轻量级、可执行的独立软件包。除了提供容器运行时所需的程序、资源、库和一些配置文件之外,还包含了一些为运行时准备的配置参数。docker镜像不包含任何动态数据,所以,其内容在构建之后也不会被改变。
1.2 制作镜像与镜像的生成
制作docker镜像,常用的有两种方式
- 制作dockerfile文件,通过docker build来构建镜像
- 基于一个已经存在的容器,使用docker commit
1.2.1 制作dockerfile,通过docker build生成镜像
dockerfile是由多条指令构成文本文档,dockerfile中的指令对应docker中的镜像层
dockerfile分为四部分: 镜像基础信息、维护者信息、镜像操作指令、启动时执行的指令
dockerfile指令: FROM、LABEL、RUN、COPY、WORKDIR、ENV、EXPOSE、CMD,其中FROM必须放在文件开头(第一行),CMD放在最后一行且只能只有一个,#开头代表注释
# 指定基于哪个镜像
FROM python:3.7
# MAINTAINER 维护者信息
LABEL maintainer="folyljz"
# 安装所需要的依赖包
RUN yum -y update
RUN yum -y install wget curl unzip
RUN yum -y install epel-release
RUN yum -y install python37 python37-devel python-pip
# 环境变量
ENV PYTHONUNBUFFERED 1
RUN In -sf /usr/bin/python3.7 /usr/bin/python3
RUN In -sf /usr/bin/pip3.7 /usr/bin/pip3
# 将源文件复制到目标文件,源文件要与Dockerfile位于相同目录中
# ADD
# 将宿主机文件copy到镜像中
COPY ./group-port /app
# 为后续的RUN、CMD指定工作目录,相当于临时的cd
WORKDIR /app
ENV PYTHONPATH=/app
RUN pip3 install -r requirements.txt
# 端口号:运行时暴露的端口号
EXPOSE 8080
# 指定启动容器时运行的脚本,如若写多个,则只会执行最后一个
CMD ["python", "app.py"]
dockerfile制作完,使用docker build生成将镜像
docker build -t ImageName:TagName dir
- -t : 给镜像加一个Tag
- ImageName : 镜像名
- TagName : 镜像Tag名
- dir : dockerfile所在路径
若提示权限被拒绝,可在docker前加 sudo
1.2.2 基于已经存在的容器生成镜像
使用docker export生成镜像
docker export -o xx.tar 容器名
- -o : OPTIONS 将输入内容写进文件
- xx.tar : 生成的压缩包的名字
- docker images 查看所有的镜像文件
- docker rmi 删除镜像
- docker run -itd 镜像ID bash/sh 运行镜像 -it交互式运行 -d后台运行
- docker save xxx.tar 镜像名 导出镜像,xxx.tar导出的压缩报名
- docker save 镜像名 l split -b 1024m - xxx.tar 镜像文件过大时,通过分压方式导出
- docker import xxx.tar 镜像名 : 版本号 导入镜像,将tar压缩包转为镜像文件
1.2.3拉取镜像
相比于制作dockerfile,拉取是相对简单的方法 -- docker pull
建议去dockerhub官网拉取镜像
2.容器
2.1 容器是什么?
容器类似于虚拟机,只是容器不是完整的操作系统,容器通常只包含必要的操作系统包和应用程序,这就是它轻量级的原因。容器由镜像得来,一个镜像运行起来就是一个容器。
- docker ps 查看正在运行的镜像
- docker ps -a 查看所有容器,包含正在运行和已经停止运行的
- docker rm 容器ID 删除容器,前提是该容器是停止状态
- docker exec -it 容器ID/IMAGE bash/sh 进入该容器内
- exit 退出容器
- docker commit -a"作者" -m"镜像导出时名称" 容器ID 目标镜像名:Tag 导出镜像
docker commit 与 docker save区别
docker commit 将容器生成新的镜像,类似于word的另存为
docker save 将镜像文件打包成tar文件,可以下载与发送