• 关于docker


    0x01 docker介绍

    docker是使用google公司推出的go语言进行开发的一款linux虚拟容器。可以简单的理解为linux下的虚拟机,用户可以使用其提供的接口来方便的实现容器的创建和销毁。有了docker虚拟容器,再也不用担心我的服务器给人黑了。

    0x02 基本概念

    镜像

    docker镜像是一个特殊的文件系统,里面包括了容器运行所需的系统程序、资源、以及各种配置。

    容器

    容器相对于镜像来说是动态的,可以被创建、启动停止、删除、和暂停。可以这样理解,镜像就好比一个类,而容器就是类的实例。

    仓库

    仓库即镜像的集合,docker hub就是这样的一个镜像仓库。

    0x03 docker安装

    yum install docker

    不同的系统都有不同的安装方式,这里不赘述,可自行百度。

    0x04 docker基本命令

    查看版本信息

    docker --version

    查看本地所有镜像

    docker images

    搜索centos镜像

    docker search centos

    获取centos镜像

    docker pull centos

    运行一个docker镜像,产生一个容器实例
    docker run centos

    docker run {镜像id前三位运行 }

    运行一个docker镜像,并进入到容器的bash(exit退出)

    docker run -it centos bash

    列出正在运行的容器

    docker ps

    列出所有运行过的容器

    docker ps -a

    停止所有正在运行的容器

    docker stopdocker ps -aq

    0x05 容器的启动

    docker的容器有两种方式。

    1.基于镜像新建一个容器并启动

    root@ubuntu:/home/vincent# docker run -d -it centos bash 
    ce5ad1718d40a57467c9247d970d0c2dcc1026c9b19bbd6b5e4650e129bf3146
    #-d  表示后台运行
    #-it 让容器标准输入保持打开并绑定,并分配一个伪终端
    # bash 指定docker容器,用shell解释器交互
    

    查看正在运行的docker容器

    root@ubuntu:/home/vincent# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    53641ccb69c1        centos              "bash"              2 minutes ago 
    

    进入id为536开头的容器的交互模式

    root@ubuntu:/home/vincent# docker exec -it 536 bash
    [root@53641ccb69c1 /]# 
    

    2.将一个终止状态(stopped)的容器重新启动

    先查询已经运行过的容器的id前3位数字

    root@ubuntu:/home/vincent# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
    53641ccb69c1        centos              "bash"              10 minutes ago      Exited (137) 37 seconds ago                       sharp_brattain
    

    再启动

    root@ubuntu:/home/vincent# docker start 536
    536
    

    进入交互模式

    root@ubuntu:/home/vincent# docker exec -it 536 bash
    [root@53641ccb69c1 /]# 
    

    0x06 用dockefile定制镜像

    dockerfile其实就是一种用来定制自定义环境镜像的脚本文件,通过docker的参数指令来构建一个自定义镜像。

    下面介绍一下参数:

    • FROM centos #使用centos基础镜像,这里也可以用别人上传到仓库的镜像,下面有例子
    • MAINTAINER vint #作者名字
    • ADD /source /var #把source文件夹里的内容添加到容器的var目录下
    • ADD test.tar.gz / # 添加到根目录并解压
    • RUN apt-get update #运行apt-get更新的命令
    • WORKDIR /root #相当于linux的cd命令
    • ENV MYSQL_VERSION 5.6 # 设置一个mysql常量
    • EXPOSE 80 #开放容器的80端口
    • CMD echo ”hello docker” #设置容器启动后默认执行的命令和参数

    这里ADD参数有个坑就是,它会把本地文件的压缩文件添加到容器内后并自动解压,注意绕过这个坑。可以用COPY参数。

    这里贴一下我们这次国赛为web题目所写的dockerfile文件作为参考:

    
    FROM nienie/ciscn_web:7.0
    
    ADD ./flag /flag
    ADD run.sh /usr/local/sbin/run.sh
    RUN chmod 755 /usr/local/sbin/run.sh && \
    apt-get -y install uuid
    
    
    RUN    service ssh start        && \
        chmod -R 777 /var/www/html/.*    && \
        chown -R ciscn /var/www/html/    && \
        rm -rf /var/www/html/*
    COPY /source/www /var/www/html
    EXPOSE 80
    
    CMD ["/usr/local/sbin/run.sh"]
    

    其实也很简单,我们直接用了上一年我们师兄所准备的镜像(因为那个镜像已经有了apache等环境,比较方便),然后把所需的文件都挂载上去后,再运行一些开启服务的命令和脚本,这个dockerfile就完成了。

    需要的注意的地方是,要填加到容器中的source文件夹等要放在与dockerfile同一个目录下。

    0x07 用dockerfile创建容器

    首先,要构建出我们用dockerfile写的自定义镜像。

    在dockerfile的当前目录下

    root@ubuntu:/home/vincent# docker build -t vint-test .
    # -t tag的缩小,表示这个镜像的标签名字
    # . 表示根据当前目录下的dockerfile来创建
    

    创建好镜像后,就是创建容器了,方法我们上面已经讲过,这里我们在新加一个端口映射

    
    root@ubuntu:/home/vincent# docker run -d -it -p 8080:80 vint-test bash
    # -p 8080:80 把容器的80端口映射到本地的8080端口上 
    

    关于docker的知识先到这里吧,这样已经够日常的使用了,有关更加深的知识点以后再继续补充完善。

    参考链接:

    https://mp.weixin.qq.com/s/3KQHidxnKGxOrOO0WPlosg

    https://www.t00ls.net/thread-45091-1-1.html

    乐观的悲观主义者。
  • 相关阅读:
    python利用pip安装模块出现报错:ReadTimeoutError: HTTPSConnectionPool的解决方法
    20届一战南理工软件工程(专硕)824
    python—socket编程
    python—异常处理
    python—面向对象设计
    python—装饰器
    python—模块与包
    python—迭代器,生成器与for循环机制
    python—文件处理
    python—函数
  • 原文地址:https://www.cnblogs.com/v1ntlyn/p/13549792.html
Copyright © 2020-2023  润新知