Docker基础入门和使用

Docker学习

简介

1、docker是什么?

解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的的容器虚拟化技术。

2、传统虚拟和docker的不同之处

  • 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整的操作系统,在该系统上再运行所需应用进程
  • 容器内的应用进程直接运行于宿主内核,容器没有自己的内核,而且也没有硬件虚拟,因此容器要比虚拟机更为轻便
  • 每个容器之间相互隔离,每个容器有自己的容器系统,容器进程之间不会相互影响,能区分计算资源

3、docker架构图

img

4、docker的三大要素

  • 镜像:镜像就是一个只读的模板,镜像可以用来创建docker容器,一个镜像可以创建多个容器。

  • 容器:docker利用容器独立运行的一个或一组应用。容器是用镜像创建的运行实例。他可以被开始、启动、停止等。每个容器都是相互隔离的、保证安全的平台。可以把容器看成是一个 简易版的Linux和运行在其中的应用程序。

  • 仓库:仓库是存放镜像文件的场所。仓库(Repository)和仓库注册服务器(Registry)是有区别的,仓库注册服务器上往往存放着多个仓库,每个仓库又存放了多个镜像,每个镜像有不同的标签(Tag)

    总结:仓库-(包含多个)->镜像-(包含多个)->容器

    总结:我们把应用程序和配置依赖打包好行程一个可交付的运行环境,这个打包好的运行环境就是镜像文件,只有通过这个镜像文件才能生成docker容器。

5、docker的安装

6、底层原理

1、执行 docker run 命令之后发生了什么?

在这里插入图片描述

2、底层原理

待补充…

7、常用的命令

1、帮助命令

docker version:查看docker版本

docker info:docker的详细信息

docker --help:docker帮助命令

2、镜像命令

docker images:列出本地的所有镜像

docker search xxx:查找某个镜像

docker search -s 10 xxx:列出收藏数不小于10的镜像

docker pull xxx:拉取镜像

docker rmi -f xxx:强制删除某个镜像

docker rmi -f $(docker images -qa):删除全部镜像

3、容器命令

docker run -it --name myname xxx:以交互模式运行容器xxx并取名为myname,为容器重新分配一个伪输入终端

docker run -it -p 自定义端口:被映射的端口 xxx:在指定端口启动容器

docker run -d xxx:以守护进程的方式启动一个容器

docker ps:查看docker里面正在运行的容器

docker ps -l:查看上次运行的容器

docker ps -n 3:查看上3次运行的容器

exit:退出并关闭容器

Ctrl+P+Q:容器不停止退出

docker start xxx:启动已经被停止的容器

docker restart xxx:重启容器

docker stop xxx:停止容器

docker kill xxx:强制停止

docker rm xxx:删除已停止的容器

docker rm $(docker ps -a -q):一次性删除多个容器

docker logs -t -f xxx:打印日志,带时间不停地追加

docker inspect xxx:查看容器内部的详细信息

docker attach xxx:进入已经退出(Ctrl+P+Q)的容器并进行交互

docker exec -it xxx ls(命令行):不进入容器执行命令行

复制容器内的文件到宿主:

docker cp 容器ID:容器内路径 目的主机路径

8、Docker镜像

1、什么是镜像?

镜像是一种轻量级、可独立运行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,他包含运行某个软件所需要的的所有内容。

2、UnionFS

UnionFS(联合文件系统)是一种分层、轻量级且高性能的文件系统,他支持对文件系统的修改作为一次提交来一层层叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。UnionFS文件系统是Docker镜像的基础 。

特性:一次同时加载多个文件系统,但从外面看来,只能看到一个文件系统,联合加载会把各种文件系统叠加起来,这样最终的文件系统会包含所有底层的文件目录。

为什么采用分层结果:最大的好处就是共享资源,比如有好多个镜像都从base镜像构建而来,那么宿主主机只需要在磁盘上保存一份base镜像,同时内存中也只需加载一份base镜像,就可以为所有容器服务了。

3、commit操作

docker commit -a=“作者” -m=“注释信息” 当前容器ID xxx/xxx:xxx(标签)

9、Docker容器数据卷

1、基础知识

卷的设计目的就是数据的持久化,完全独立于容器的生命周期,因此Docker不会在容器删除时删除其挂载的数据卷。

特点:

1、数据卷可在容器之间共享或重用数据

2、卷的更改可以直接生效

3、数据卷中的更改不会包含在镜像的更新中

4、数据卷的生命周期一直持续到容器没有使用它为止

2、数据卷的添加

1、直接命令添加

docker run -it -v /宿主机的绝对目录:/容器内目录 镜像名

验证:使用docker inspect 容器ID查看

2、DockerFile添加

3、数据卷容器

命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载数据卷的数据,称之为数据卷容器。

使用步骤:

1、新建一个父容器:docker run -it --name=“doc01” zy/centos

2、新建一个子容器继承这个父容器

docker run -it --name=“doc02” --volumes-from dc01 zy/centos

效果:在父容器中新建的文件夹和文件会在子容器中复制一份。子容器添加的文件同样会出现在父容器和其他子容器中,从而达到共享文件的效果。

10、Docfile解析

1、基础知识

什么是Dockerfile?

Dockerfile是用来构建Docker镜像的构建文件,是由一系列参数和命令构成的脚本

(2)构建三步骤

编写Dockerfile文件----->docker build------>docker run

2、编写方式

1、基本语法

  • 每条保留字指令都必须为大写字母且后面至少要跟一个参数
  • 指令按照从上到下的顺序执行
  • #表示注释
  • 每条指令都会创建一个新的镜像层,并对镜像进行提交

以centos为例:

FROM scratch
MAINTAINER The CentOS Project <cloud-ops@centos.org>
ADD c68-docker.tar.xz /
LABEL name="CentOS Base Image" \
    vendor="CentOS" \
    license="GPLv2" \
    build-date="2016-06-02"

# Default command
CMD ["/bin/bash"]

2、Dockerfile的执行流程

  • docker从基础镜像运行一个容器
  • 执行一条指令并对容器做出修改
  • 执行类似docker commit的操作,提交一个新的镜像层
  • docker再基于刚提交的镜像运行一个新的容器
  • 执行dockerfile中的下一条指令,直到所有的指令都执行完成
3、Dockerfile保留字指令

FROM:

MAINTAINER:

RUN:

EXPOSR:

WORKDIR:

ENV:

ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和

COPY:

VOLUME:

CMD:

ENTRYPOINT: 指定一个容器启动时要运行的命令

ONBUILD:当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承后父镜像的onbuild被触发

4、编译指令

docker build -t 新镜像名字:TAG

11、推送镜像到阿里云

1、运行要推行的容器

2、推送命令

首先使用docker ps命令查看运行容器的ID

docker commit -a=pss -m=“我的推送” 容器ID 容器名称:TAG

此时使用docker images 可以看到上一步推送的镜像

3、推送的阿里云

登录阿里云开发者:

https://cr.console.aliyun.com/cn-hangzhou/instances/repositories

创建命名空间

在本地执行一下命令进行推送:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值