Docker

1.概念

        Docker是世界领先的软件容器平台,容器就是将软件打包成标准化单元,以用于开发、交付和部署。

        容器镜像是轻量级、可执行的独立软件包,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。

        容器化软件适用于基于Linux和Windows的应用,在任何环境中能够始终如一地运行。

        容器赋予了软件独立性,使其免受外在环境差异的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。

2.思想

        集装箱:Docker容器包含了应用程序及其所有依赖项,确保在任何环境中都能以相同的方法运行

        标准化:规定了运输方式、存储方式、API接口

        隔离:每个Docker容器都在增加的隔离环境中运行,与宿主机和其他容器隔离

3.特点

        轻量:在一台机器上运行的多个Docker容器可以共享这台机器的操作系统内核;他们能够迅速启动,只需占用很少的计算和内存资源。镜像时通过文件系统层进行构造的,并共享一些公共文件。这样就能尽量降低磁盘用量,并能更地下载镜像。

        标准:Docker容器基于开放式标准,能够在所有主流的Linux版本Windows以及包括VM、裸机服务器和云在内的任何基础设施上运行。

        安全:Docker赋予应用的隔离性不仅限于彼此隔离,还独立于底层的基础设施。Docker默认提供最强的隔离,因此应用出现问题,也是单个容器的问题。

4.基本概念

4.1 镜像

        镜像是一个特殊的文件系统,操作系统分为内核和用户空间。对于Linux而言,会挂载root文件系统为其提供用户空间支持,而Docker镜像就相当于是一个root文件系统。

        Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数。

4.2 容器

        镜像运行时的实体,容器可以被创建、启动、停止、删除、暂停等。

        容器的实质时进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立命名空间。

        容器存储层的生命周期和容器一样,容器消亡时,容器存储层也随之消亡,因此,任何保存于容器存储层的信息都会随着容器的删除而丢失。

4.3 仓库

        镜像仓库时Docker用来集中存放镜像文件的地方,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。

5.Docker常见命令

5.1 基本命令

docker version #查看docker版本
docker images #查看所有已下载镜像
docker container ls #查看所有容器
docker ps #查看正在运行的容器
docker image prune # 清理临时的、没有被使用的镜像文件

5.2 拉取镜像

docker search mysql #查看mysql相关镜像
docker pull mysql:5.7 #拉取5.7版本的mysql镜像
docker image ls #查看所有已下载的镜像

5.3 构建镜像

         运行docker builde命令并指定一个Dockerfile时,Docker会读取Dockerfile中的指令,逐步构建一个新的镜像,并将其保存在本地。

docker build -t imageName:1.0.0
# imageName 是镜像名称   1.0.0 是版本号或标签

        Dockerfile的文件名不必须为Dockerfile,也不一定要放在构建上下文的根目录中。使用-f或--file选项,可以指定任何位置的任何文件作为Dockerfile。

5.4 删除镜像

        通过docker rmi[image]删除镜像,在删除镜像前要确保这个镜像没有被容器引用。通过docker ps 查看是否被容器引用。

➜  ~ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
c4cd691d9f80        mysql:5.7           "docker-entrypoint.s…"   7 weeks ago         Up 12 days          0.0.0.0:3306->3306/tcp, 33060/tcp   mysql

        可以看到 mysql 正在被 id 为 c4cd691d9f80 的容器引用,我们需要首先通过 docker stop c4cd691d9f80 或者 docker stop mysql暂停这个容器。

        然后查看 mysql 镜像的 id

➜  ~ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
mysql                   5.7                 f6509bac4980        3 months ago        373MB

 通过 IMAGE ID 或者 REPOSITORY 名字即可删除

docker rmi f6509bac4980 #  或者 docker rmi mysql

5.5 镜像推送

        docker push 命令用于将本地的 Docker 镜像上传到指定的 Registry/Hub

# 将镜像推送到私有镜像仓库 Harbor
# harbor.example.com是私有镜像仓库的地址,ubuntu是镜像的名称,18.04是镜像的版本标签
docker push harbor.example.com/ubuntu:18.04

6.镜像的数据管理

1 数据卷

        数据卷是由Docker管理的数据存储区域,有一下特点:

                1可以在容器之间共享重用。

                2.即使容器被删除,数据卷中的数据也不会被自动删除,从而确保数据的持久性。

                3.对数据卷的修改会立马生效。

                4.对数据卷的更新,不会影响镜像。

# 创建一个数据卷
docker volume create my-vol
# 查看所有的数据卷
docker volume ls
# 查看数据卷的具体信息
docker inspect web
# 删除指定的数据卷
docker volume rm my-vol

2.挂载主机目录 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值