欢迎光临散文网 会员登陆 & 注册

Docker安装与使用教程

2020-03-20 10:31 作者:Iammyself001  | 我要投稿

CentOS安装配置卸载Docker

前提

1.只能是64位CPU

2.内核3.8以上(RHEL/CentOS 6.5,Fedora Core 19以上),没办法,2014年才出现,2017年才开始有热度,注意:6.8的版本与7安装方式不太一样。

3.内核必须支持一种适合的存储驱动(Device Manager;AUFS;vfs;btrfs;)

如果没有的话,需要安装

4.内核必须支持并开启cgroup和nameSpace功能

YUM安装

一、安装依赖包

三、更新yum缓存

四、安装CE版


五、启动

六、检查

七、执行一个实例——hello world


镜像加速

登入自己阿里云账号https://dev.aliyun.com/search.html(作为计算机从业者是应该有的)

一、CentOS7

1.新建deamon.json

2.加载配置文件

3.重启服务

架构

常用命令

一、帮助命令

1.docker help

2.官方文档https://docs.docker.com/

二、镜像命令

1.列出本地镜像

2.查询镜像(查询是在https://hub.docker.com/,但是下载是在阿里云下载)

3.下载镜像

4.删除镜像

三、容器命令

前提:有镜像才能有容器

1.新建并启动容器

1)以CentOS为模板生成一个容器,其中的110850f96301是新生成容器的地址

2)使用镜像在后台模式启动一个容器

$> docker run -d centos

容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的。所以下面的方法就没问题。

$> docker run -d centos:7.6.1810 /bin/sh -c "while true;do echo 'YangBingxue is the most handsome man in NCEPU';sleep 2;done"

    3)-P随机端口

    4)-p指定端口

    2.列出当前所有正在运行的容器

    还记得之前的叫“mycentos”

    3.退出容器

      回来

      docker exec -it

      4.启动容器

      但是有时会出错,启动mysql出问题,根据提示信息作出方案,kill端口。

      5.重启容器

      四、容器管理

      1.查看容器日志信息



      2.查看容器内运行的进程

      3.查看容器内部细节

      4.从容器拷贝文件到主机上

      5.提交容器成为镜像

      比如:我们打算把基于Nginx的诚实网站提交

      6.提交到阿里云

      镜像原理

      1.什么是镜像

      镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。


      2.UnionFS(联合文件系统)

      Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。

      Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

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


      3.Docker镜像加载原理

      Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。

      bootfs(boot file system)主要包含bootloader和kernel,bootloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。

      rootfs(root file system),在bootfs之上。包含的就是典型Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。

      对于一个精简的OS,rootfs可以很小,只需要包括最基本的命令、工具和程序库就可以了,因为底层直接用Host的kernel,自己只需要提供rootfs 就行了。由此可见对于不同的linux发行版,bootfs基本是一致的,rootfs会有差别,因此不同的发行版可以公用bootfs。


      4.镜像分层

      以pull为例,pull一个nginx需要同时下载多层。

      安装TomCat就是这种感觉

      镜像分层最大的一个好处就是:共享资源

      eg:有多个镜像都从相同的base镜像构建而来,那么宿主机只需在磁盘上保存一份base镜像,同时内存中也只需加载一份base镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。




      容器数据卷

      一、容器数据卷特点:

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

      卷中的更改可以直接生效

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

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

      主机与容器间的数据共享


      二、添加容器数据卷

      1.命令添加

      1) run -v

      这时在host上在检查的时候,新生成一个新文件夹my_data_volume,contain上面也新生成一个新文件夹 data——volume_container。


      2)检查是否挂载成功

      3)读写操作

      主机touch test,container立即出现test;

      container vi test,Host cat立即出现结果

      即使容器退出,主机依旧保存数据不变;

      Host在container退出的时候touch test3,container在登入也会出现

      我上面的出错了,应该是docker start  bc654a0dcc2c,但是尽管docker ps是两个不同的进程,但是共享文件夹里面的是一样的内容。

      可以挂载可读模式(仅对于container)

      查看细节

      2.DockerFile添加

      1)建立文件夹,在DockerFIle使用volume给镜像添加一个或多个数据卷

      FROM centos

      VOLUME ["/data_volume1","/data_volume2"] 

      CMD echo "FInish,YangBingxue_is_the_most_handsome_man_in_NCEPU"

      CMD /bin/bash

      2)build

      3)检查是否挂载成功

      主机文件位置一般在/var/lib/docker/volumes/下面

      4)读写操作

      三、数据卷容器 --volumes-from

      A容器挂载数据卷,其它容器(B,C)通过挂载这个A(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器。

      下面的docker1就是父容器,docker2与docker3都挂载到docker1上面,是docker1的子容器。

      由此可见,父容器的文件,在子容器当中会出现,子容器出现的文件在父容器也会出现,即使删除父容器,子容器的文件依然在

      所以,容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止


      DockerFile

      一、什么是DockerFile

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

      2.构建过程:

      1)编写DockerFIle文件

      2)docker build

      3)docker run


      3从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段,

      Dockerfile是软件的原材料

      Docker镜像是软件的交付品

      Docker容器则可以认为是软件的运行态。

      二、DockerFIle内容

      1.基础常识

      每条保留字指令都必须为大写字母且后面要跟随至少一个参数

      指令按照从上到下,顺序执行

      #表示注释

      每条指令都会创建一个新的镜像层,并对镜像进行提交

      2.保留字

      1)FROM基础镜像,当前镜像是基于那个镜像的

      2)MAINTAINER:镜像维护者的姓名和邮箱

      3)RUN:容器构建时需要运行的命令

      4)EXPOSE:当前容器对外暴露的接口

      5)WORKDIR:指定在创建容器后,终端默认登入进来的工作目录

      6)ENV:用来在构建镜像过程中设置环境变量

      7)COPY:拷贝文件和目录到镜像中

      8)ADD:COPY的压缩文件+解压

      9)VOLUME:容器数据卷,用于数据保存和持久化

      10)CMD:指定一个容器启动时运行的命令

      如果有多个CMD的话,只执行最后一个CMD,CMD也可以被docker run 之后的命令替换。


      11)ENTRYPOINT:指定一个容器启东时运行的命令

      全部ENTRYPOINT全部执行


      12)ONBUILD:当构件一个被集成的DockerFile是运行命令,父镜像在被子镜像继承后父镜像的Onbulid被触发。

      总结

      如果有建议和看法,可以在文末留言,谢谢。


      Docker安装与使用教程的评论 (共 条)

      分享到微博请遵守国家法律