【Docker】docker镜像与容器

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 : 生成的压缩包的名字

  1. docker images                                                       查看所有的镜像文件
  2. docker rmi                                                              删除镜像
  3. docker run -itd 镜像ID bash/sh                              运行镜像   -it交互式运行   -d后台运行
  4. docker save xxx.tar 镜像名                                    导出镜像,xxx.tar导出的压缩报名
  5. docker save 镜像名 l split -b 1024m - xxx.tar        镜像文件过大时,通过分压方式导出
  6. 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文件,可以下载与发送

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值