超哥

作者: LY_7z | 来源:发表于2021-09-10 13:13 被阅读0次

    https://www.cnblogs.com/pyyu/p/9485268.html#
    Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。
    容器里面的应用,直接就是底层系统的一个进程。
    多个容器可以共享资源。
    容器只包含他用到的组件。
    docker创建的所有虚拟实例共有一个Linux内核。
    docker三大概念:镜像,容器,仓库
    镜像就是一个只读模板,镜像可以用来创建容器。
    union FS技术,分层存储,
    镜像和容器的关系,就像类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。
    容器可以被创建,启动,停止,删除,暂停
    docker利用容器来运行应用程序
    容器是从镜像创建的运行实例,每个容器之间是隔离的。
    可以把容器看作一个简易版的Linux环境和运行在其中的应用程序。
    仓库是集中存放镜像的地方,仓库分为公开仓库public和私有仓库private。最大的公开仓库是docker hub,存放了数量庞大的镜像供用户下载。
    当用户创建的了自己的镜像后就可以使用push命令将他上传到公有或私有仓库。
    国内的一些云服务商提供了针 对 Docker Hub 的镜像服务(Registry Mirror),这些镜像服务被称为加速器。
    使用加速器会直接从国内的地址下载 Docker Hub 的镜像,比直接从官方网站下载速度会提高很多。
    官方教程如下,最正确安装docker姿势

    docker最低支持centos7且在64位平台上,内核版本在3.10以上
    [root@oldboy_python ~ 10:48:11]#uname -r
    3.10.0-693.el7.x86_64
    
    1.卸载旧版本
    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-selinux \
                      docker-engine-selinux \
                      docker-engine
    
    2.设置存储库
    sudo yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2
    sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    
    3.安装docker社区版
    sudo yum install docker-ce
    4.启动关闭docker
    systemctl start docker
    

    Docker镜像加速器

    一条命令加速

    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://95822026.m.daocloud.io

    docker基础命令注释

    [root@docker ~]# docker --help

    使用docker镜像

    从仓库获取镜像
    管理本地主机的镜像
    获取镜像
    从docker registry获取镜像的命令是docker pull。命令格式是:
    docker pull [选项][docker registry地址] 仓库名:标签
    image文件是通用,可以共享的
    列出所有的image文件
    docker image ls
    删除image文件
    docker image rm [imagename]
    [root@docker ~]# docker search centos #搜索所有centos的docker镜像
    可以使用docker pull命令来从仓库获取所需要的镜像。
    [root@docker ~]# docker pull centos #获取centos镜像
    [root@docker ~]# docker run -it centos /bin/bash #完成后可以使用该镜像创建一个容器
    镜像的ID唯一标识了镜像,如果ID相同,说明是同一镜像。
    TAG信息来区分不同发行版本,如果不指定具体标记,默认使用latest标记信息。
    [root@docker ~]# docker images #查看docker镜像
    如果要移除本地的镜像,可以使用docker rmi命令(在删除镜像之前先用docker rm删除依赖于这个镜像的所有容器)。注意docker rm 命令是移除容器。
    [root@docker ~]# docker rmi imageID #删除docker镜像
    如果要导出镜像到本地文件,可以使用docker save命令。
    [root@docker ~]# docker save centos > /opt/centos.tar.gz #导出docker镜像至本地
    可以使用docker load从本地文件中导入到本地docker镜像库
    [root@docker ~]# docker load < /opt/centos.tar.gz #导入本地镜像到docker镜像库
    [root@docker~]# docker images #查看镜像导入情况
    启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在停止状态(stopped)的容器重新启动。
    [root@docker ~]# docker run centos /bin/echo "hehe"
    [root@docker ~]# docker run --name mydocker -it centos /bin/bash#启动一个终端,允许用户进行交互。
    --name:给容器定义一个名称
    -i:则让容器的标准输入保持打开。
    -t:让Docker分配一个伪终端,并绑定到容器的标准输入上
    /bin/bash:执行一个命令

    当利用docker run来创建容器时,Docker在后台运行的标准操作包括

    检查本地是否存在指定的镜像,不存在就从公有仓库下载
    利用镜像创建并启动一个容器
    分配一个文件系统,并在只读的镜像层外面挂在一层可读写层
    从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
    从地址池配置一个ip地址给容器
    执行用户指定的应用程序
    执行完毕后容器被终止

    获取镜像 hello-world

    docker pull hello-world

    检查镜像

    docker images

    运行image文件,可以用容器id

    docker run hello-world

    检查docker容器进程

    docker ps

    检查所有运行过的容器

    docker ps -a

    运行一个Ubuntu容器

    [root@oldboy_python ~ 11:52:22]#docker pull ubuntu:14.04
    下载过程可以看出镜像是由多层存储构成的。下载也是一层一层,并非单一的文件。
    下载过程中给出每一层的前12位ID。下载结束后会给出sha246的文件一致性校验值。
    运行Ubuntu容器
    [root@oldboy_python ~ 12:18:53]#docker run -it --rm ubuntu:14.04 bash
    root@3efbb2749d7c:/# cat /etc/os-release

    使用exit退出容器

    docker run就是运行容器的命令。
    参数
    -it : -i 是交互式操作,-t是终端
    -rm : 容器退出后将其删除。也可以不指定参数,手动docker rm,使用-rm可以避免浪费空间。
    ubuntu:14.04 这指的是镜像文件
    bash : 指定用交互式的shell,因此需要bash命令
    -d参数:后台运行容器,返回容器ID
    [root@oldboy_python ~ 15:58:14]#docker run -d centos /bin/sh -c "while true;do echo hello centos; sleep 1;done"

    docker start c02
    docker stop c02
    docker logs c02
    docker rm c02
    docker ps
    docker images #列出所有本级镜像
    docker pull centos #获取新的centos镜像
    docker search nginx #搜索nginx镜像

    构建镜像

    1.通过commit修改镜像
    2.编写dockerfile

    进入容器
    使用-d参数时,容器启动后会进入后台。某些时候需要进入容器进行操作,有很多种方法,包括使用docker attach命令或nsenter工具等。
    docker exec -it 容器id
    docker attach 容器id

    提交创建自定义的镜像(docker container commit)

    1.我们进入交互式的centos容器中,发现没有vim命令
    docker run -it centos
    2.在当前容器中,安装一个vim
    yum install -y vim
    3.安装好vim之后,exit退出容器
    exit
    4.查看刚才安装好vim的容器记录
    docker container ls -a
    5.提交这个容器,创建新的image
    docker commit 059fdea031ba chaoyu/centos-vim
    6.查看镜像文件
    [root@master /home]docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    chaoyu/centos-vim latest fd2685ae25fe 5 minutes ago 348MB

    外部访问容器

    容器中可以运行网络应用,但是要让外部也可以访问这些应用,可以通过-p或-P参数指定端口映射。
    -P 参数会随机映射端口到容器开放的网络端口
    [root@oldboy_python ~ 16:31:37]#docker run -d -P training/webapp python app.py
    检查映射的端口

    宿主机ip:32768 映射容器的5000端口

    [root@oldboy_python ~ 16:34:02]#docker ps -l
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
    cfd632821d7a        training/webapp     "python app.py"     21 seconds ago      Up 20 seconds       0.0.0.0:32768->5000/tcp   brave_fermi
    

    也可以通过-p参数指定映射端口

    指定服务器的9000端口,映射到容器内的5000端口

    [root@oldboy_python ~ 16:46:13]#docker run -d -p 9000:5000 training/webapp python app.py
    查看指定容器的端口映射
    [root@oldboy_python ~ 16:49:01]#docker port c0b
    5000/tcp -> 0.0.0.0:9000
    查看容器内的进程
    [root@oldboy_python ~ 16:49:05]#docker top c0b

    利用dockerfile定制镜像

    镜像是容器的基础,每次执行docker run的时候都会指定哪个镜像作为容器运行的基础。我们之前的例子都是使用来自docker hub的镜像,直接使用这些镜像只能满足一定的需求,当镜像无法满足我们的需求时,就得自定制这些镜像。
    镜像的定制就是定制每一层所添加的配置、文件。如果可以把每一层修改、安装、构建、操作的命令都写入到一个脚本,用脚本来构建、定制镜像,这个脚本就是dockerfile。
    Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令 构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

    相关文章

      网友评论

          本文标题:超哥

          本文链接:https://www.haomeiwen.com/subject/azvgwltx.html