Docker学习笔记(Day2):镜像与容器

一、基本概念

1.1 镜像(Image)
  1. 操作系统分为内核和用户空间,Docker镜像,相当于一个 root 文件系统。
  2. Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置文件之外,还包含了一些为运行时准备的配置参数。镜像不包含任何动态链接,其内容在构建后也不会发生改变。
  3. 镜像采用了Union FS的技术,将其设计为分层储存的架构。镜像构建时,会一层层的构建,前一层是后一层的基础。每一层构建完后就不会再发生改变,后一层上的任何改变只会发生在自己这一层。
    镜像相当于储存好的用户空间,对于用户空间的更改都会被记录下来
1.2 容器(Container)
  1. 镜像和容器的关系,就像面对对象程序设计中的类与实例一样,镜像是静态的定义,容器是镜像运行时的实例。容器可以被创建,启动,停止,删除,暂停。
  2. 容器的实质是进程,但是与直接在宿主机上执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此,容器拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至属于自己的用户ID空间。容器内的进程运行在一个隔离的环境中,使用时,独立于宿主机的系统。
  3. 容器内储存层的生存周期与容器一样,容器消失时,容器储存层也随之消亡。因此,尽量不要将任何信息保存在容器储存层。应该将数据保存在数据卷或者绑定宿主目录
1.3 仓库(Repository)
  1. Docker Reposity 是一个集中存储、分发镜像的服务
  2. 一个Docker Reposity 中包含多个仓库,每个仓库中可以包含多个标签(Tag); 每个标签对应一个镜像。

二、镜像的使用

2.1 获取镜像
$ docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

例如:
docker pull

其中未给出 Docker Registry 地址,因此会从Docker Hub(docker.io)获取镜像library/ubuntu 是仓库名, 18.04 为标签, ubuntu:18.04是镜像名

2.2 运行镜像
$ docker run -it --rm ubuntu:18.04 bash

docker run 是运行容器的命令
-it::-i 交互式操作,-t 终端
–rm:指容器退出后随之将其删除。默认情况下,退出容器不会立即删除容器,需要手动 docer rm。
ubuntu:18.04:镜像名,以这个镜像为基础来启动容器
bash:交互式Shell
exit:退出这个容器

2.3 列出镜像
$ docker image ls
# 列出所有已经下载的镜像
# docker image ls 配合参数使用,可显示部分镜像

$ docker system df
# 查看镜像、容器、数据卷所占用的空间

$ docker image ls -f dangling=true
# 查看虚悬镜像

$ docker image prune
# 虚悬镜像为无用镜像,可使用该命令删除
2.4 使用镜像

docker commit 定制镜像:不推荐

$ docker commit 
# 将容器保存为镜像

$ docker history 镜像名
# 查看镜像内的历史记录

Dockerfile 定制镜像(推荐)

$ docker build -t nginx:v3 .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM nginx
 ---> e43d811ce2f4
Step 2 : RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
 ---> Running in 9cdc27646c7b
 ---> 44aa4490ce2c
Removing intermediate container 9cdc27646c7b
Successfully built 44aa4490ce2c

在此处利用docker build构建镜像。其格式为:

docker build [选项] <上下文路径/URL/->

在此处我们指定了最终镜像名称 -t nginx:v3, 构建成功后,我们就可以运行这个镜像了。

清楚docker build中上下文目录的概念
docker build 过程中,会将上下文目录中所有文件传入镜像中,如果想忽视某个文件。可以选择.gitignore语法写一个.dockerignore

其他方法构建docker 镜像

  1. git repo进行构建
$ docker build -t hello-world https://github.com/docker-library/hello-world.git#master:amd64/hello-world
  1. 用给定的tar压缩包构建
$ docker build http://server/context.tar.gz
  1. 从标准输入中读取Dockerfile 进行构建
$ docker build - < Dockerfile
  1. 从标准输入中读取上下文压缩包进行构建
$ docker build - < context.tar.gz

构建docker镜像有很多方法,需要知道有这些方法可以构建。
Dockerfile 文件书写语法

Docker 镜像的导入和导出 docker savedocker load
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值