• 微服务深入浅出(10)-- Docker


    概念

    1、Docker引擎

    一个运行在服务器上的后台进程

    2、Docker客户端

    分为两种:CLI和RestAPI,与Docker引擎交互

    3、Docker镜像

    类似于我们使用的光盘,将程序打包到Docker镜像中

    4、Docker容器

    Docker引擎实例化Docker镜像获得的东西

    5、Docker镜像注册中心

    用于存放公开和私有的Docker镜像仓库。我们可以利用Docker Registry大家私有的镜像仓库

    特点

    1、快速运行

    只需要几秒钟就能启动

    2、节省资源

    运行在Docker引擎之上,可直接利用宿主硬件资源而无需占用过多的系统开销

    3、便于交付

    交付的是镜像,不仅封装了程序,还包含了运行环境

    4、容易管理

    安装

    CPU必须是64位,Linux内核必须在3.10以上

    1、更新yum包

    >yum update

    2、添加yum的Docker包仓库

    $ sudo tee /etc/yum.repos.d/docker.repo <<-‘EOF’ 
    [dockerrepo] 
    name=Docker Repository 
    baseurl=https://yum.dockerproject.org/repo/main/centos/7/ 
    enabled=1 
    gpgcheck=1 
    gpgkey=https://yum.dockerproject.org/gpg 
    EOF 

    3、安装docker引擎

    >yum install docker-engine

    4、启动docker引擎

    >service docker start

    5、查看docker版本

    >docker version

    配置阿里镜像服务

    访问https://dev.aliyun.com/search.html,注册登录后可以进入管理中心,可以查看到自己的镜像加速器为:https://2h3po24q.mirror.aliyuncs.com 

    使用配置文件 /etc/docker/daemon.json(没有时新建该文件)

    {
        "registry-mirrors": ["<your accelerate address>"]
    }

    然后service docker restart重启docker即可

    Docker镜像常用操作

    docker images 列出镜像

    docker search centos 搜索镜像

    docker pull centos 拉去镜像

    docker save centos > centos.tar 导出镜像,不指定路径则导出在当前目录

    docker load < centos.tar 导入镜像

    Docker容器常用操作

    1、创建并启动容器

    docker run -i -t -d centos /bin/bash

    -i参数表示打开标准收入设备,可以用键盘输入

    -t参数表示分配一个伪终端,与服务器建立一个会话

    -d参数表示后台运行

    -p:表示将容器内部使用的网络端口映射到我们使用的主机上 ,如-p 5000:5000

    -P:表示将容器内部端口随机映射到主机的高端口 

    -v:将宿主机上的磁盘挂在到容器,可多次使用-v挂在多个磁盘目录 -v ~/sofeware:/mnt/sofeware

    centos参数表示需要运行的镜像名称,标准格式为centos:latest,如果最新版本latest可以省略

    /bin/bash参数表示运行容器中的bash应用程序

    2、列出容器

    docker ps

    -a:表示列出所有容器,包括所有状态

    -l:表示列出最近创建的容易,包括所有状态

    -n:表示列出n个最近创建的容器,包括所有状态

    -q:表示仅列出container id字段

    -s:表示增加size字段描述容器大小

    3、进入运行中的容器

    docker attach [container_id]

    4、执行命令

    docker exec -i -t [container_id] ls -l

    5、停止容器

    docker stop [container_id]

    对容器发送SIGTERM信号,一段时候后终止容器

    6、终止容器

    docker kill [container_id]

    对容器发送SIGKILL信号,立即终止容器

    7、启动容器

    docker start [container_id]

    8、重启容器

    docker restart [container_id]

    9、删除容器

    docker rm [container_id]

    这个命令只能删除已停止的容器,可以通过-f参数强制删除运行的容器

    docker rm -f [container_id]

    10、删除镜像

    docker rmi [image_name]

    如果删除的镜像跑了一些容器,只能添加-f参数来强制删除

    11、导入导出镜像

    docker export [container_id] > centos.tar

    docker import [image_name].tar huangyong/centos:latest

    12、保存环境

    docker commit -m "ubuntu with vim" -a "sgy" aa97ba3292ce sgy/ubuntu:vim

    -m指定说明信息

    -a指定用户信息

    aa97ba3292ce代表容器的id

    sgy/ubuntu:vim指定目标镜像的用户名、仓库名和 tag 信息

    13、查询某个容器的所有操作日志

    docker logs centos

    更多命令用户参考docker --help

    使用Dockerfile创建镜像

    通过脚本文件让构建镜像做到自动化。

    1、使用FROM指令来设置基础镜像

    FROM centos:latest

    2、设置维护者信息

    MAINTAINER "Eric"<eric.lan@qq.com>

    3、设置需要添加到容器中的文件

    ADD jdk-8u91-linux-x64.tar.gz /opt

    第一个参数为宿主机的来源路径(这里使用相对路径,与dockerfile同目录,也可以使用绝对路径),第二个参数是容器目标路径。需要注意的是,ADD指令将自动解压来源路径中的压缩包,如果不需要解压可以使用COPY指令代替。

    4、设置镜像制作过程中需要执行的命令

    RUN ln -s /opt/jdk-8u91-linux-x64 /opt/jdk

    多条命令可以使用命令换行合并成一条,减少构建镜像的体积(每条指令都会生成新的镜像层)。

    5、设置环境变量

    ENV JAVA_HOME /opt/jdk

    ENV PATH $JAVA_HOME/bin:$PATH

    6、设置容器启动时需要执行的命令

    CMD java -version

    如果使用docker run命令指定了需要执行的命令,那么该命令将覆盖file中通过CMD设置的命令

    7、构建镜像

    docker build -t eric/java .

    -t选项指定镜像名称并读取当前目录(即.目录)的dockerfile文件

    docker tag 422121qwq23 eric/java:1.0 来修改镜像的仓库名称和标签名称

    搭建Docker Registry管理镜像

     1、docker run -d -p 50000:5000 -v ~/docker-registry:/tmp/registry registry

    -d:表示后台启动该容器

    -p:表示对容器中的应用程序暴露的端口号进行端口映射,左边为宿主机的端口,右边的为容器要暴露的端口

    -v:数据卷选项,将宿主机的~/docker-registry目录映射为容器的/tmp/registry目录

    访问http://127.0.0.1:50000/可以查看Docker Registry是否启动成功

    2、重命名镜像标签

    docker tag dad11232da908 127.0.0.1:50000/eric/java

    3、推送镜像

    docker push 127.0.0.1:50000/eric/java

    那么就将镜像推送到127.0.0.1:50000的Registry了,局域网用户也就能使用它来管理自己的镜像了

  • 相关阅读:
    2019-9-2-C#枚举中使用Flags特性
    2019-9-2-C#枚举中使用Flags特性
    2019-8-31-C#-转换类型和字符串
    2019-8-31-C#-转换类型和字符串
    2019-8-31-C#-获取进程退出代码
    2019-8-31-C#-获取进程退出代码
    access truncate
    GIT分布式版本控制系统
    iSCSI的配置(target/initiator)
    chkconfig命令
  • 原文地址:https://www.cnblogs.com/ijavanese/p/9207255.html
Copyright © 2020-2023  润新知