• Docker安装及使用


    本文主要为Docker的基础知识

    Centos7更换阿里源

    cd /etc 
    
    cd /etc/yum.repos.d/
    
    mv CentOS-Base.repo CentOS-Base.repo.back  #建议备份或者改名
    
    wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
    
    yum makecache #生成缓存
    

    Docker安装

    参考链接

    Uninstall old versions

    Older versions of Docker were called docker or docker-engine. If these are installed, uninstall them, along with associated dependencies.

    $ sudo yum remove docker 
                      docker-client 
                      docker-client-latest 
                      docker-common 
                      docker-latest 
                      docker-latest-logrotate 
                      docker-logrotate 
                      docker-engine
    

    yum安装gcc相关

    yum -y install gcc
    yum -y install gcc-c++
    
    • 【报错】yum install -y gcc报错的解决方法如下

      错误:软件包:glibc-2.17-196.el7.i686 (yum.repo)

              需要:glibc-common = 2.17-196.el7
        
              已安装: glibc-common-2.17-222.el7.x86_64 (@base)
        
                  glibc-common = 2.17-222.el7
        
              可用: glibc-common-2.17-196.el7.x86_64 (yum.repo)
        
                  glibc-common = 2.17-196.el7
      

      错误:软件包:gcc-4.8.5-16.el7.x86_64 (yum.repo)

              需要:cpp = 4.8.5-16.el7
        
              已安装: cpp-4.8.5-28.el7_5.1.x86_64 (@updates)
        
                  cpp = 4.8.2-16.el7_5
        
                  cpp = 4.8.5-28.el7_5.1
        
              可用: cpp-4.8.5-16.el7.x86_64 (yum.repo)
        
                  cpp = 4.8.5-16.el7
        
                  cpp = 4.8.2-16.
      
    • 以上问题解决办法:输入命令:yum distro-sync

    设置stable镜像仓库

    $ sudo yum install -y yum-utils 
      device-mapper-persistent-data 
      lvm2
    
    $ sudo yum-config-manager 
        --add-repo 
        https://mirror.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

    更新数据索引

    yum makecache fast

    安装docker

    yum -y install docker-ce

    启动docker

    systemctl start docker

    配置镜像加速器

    针对Docker客户端版本大于 1.10.0 的用户

    您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器,镜像地址是自己的

    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://qnls4bm7.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    Docker常用命令

    镜像命令

    #获取当前镜像id
    docker images -q
    #获取所有镜像id
    docker images -qa
    #搜索镜像
    docker search 镜像名
    #拉取镜像
    docker pull 镜像名:tag
    #删除单个镜像
    docker rmi -f 镜像id
    #删除多个镜像
    docker rmi -f 镜像id:tag 镜像id:tag
    #删除全部(慎用!)
    docker rmi -f $(docker images -qa)
    

    容器命令

    容器启动(run)

    调用格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

    常用的参数主要有:

    • -it : 启动容器后会自动进入容器交互命令行,快捷键Ctrl+PQ 断开容器shell连接但是容器后台运行,exit:容器停止退出
    • -d : 启动容器后,不进入容器命令交互行
    • --name : 指定容器运行后的名字,若不指定,随机生成
    • -p :指定交互的端口映射, -p linux_port:docker_container_port
    • -P :随机分配端口,一般不这样用
    • -v : 挂在指定volume,用于容器与实际文件交互 -v linux_absolut_path:container_absolute_path
    • --link :使容器与容器能够互相通信,--link [容器名/id]:[连接名]
    • --restart :利用重启策略自我修复容器,always在重启docker服务后,会自动重启容器(即使在重启服务前停止了该容器),unless-stopped则不会;on-failure会在容器退出并且返回值不是0的时候重启容器。

    容器其他操作

    # 查看所有在运行的容器
    docker container ls
    docker ps  -l (上一次运行的容器) -n 3(上三次运行的容器)
    # 查看所有容器,已停止的容器也会显示
    docker container ls -a
    docker ps -a
    # 停止运行容器
    docker kill container_id/container_name (强制停止)
    docker stop container_id/container_name
    # 启动/重启停止了的容器
    docker start/restart container_id/container_name
    # 删除未运行的容器
    docker rm container_id/container_name
    

    重要的一些操作

    #启动守护式容器
    docker run -d 容器名
    #查看容器日志
    docker logs -f -t --tail 容器id 
    【注】-t 加入时间戳
    	 -f跟随最新打印日志
    #查看容器内运行的进程
    docker top 容器id
    # 查看容器配置的细节和运行时信息
    docker  inspect  container_id/container_name
    # 对运行时的容器,运行bash命令
    docker  exec container_id/container_name bash_commands  在容器中打开新的终端
    docker  attach container_id/container_name bash_commands  直接进入容器启动的终端
    # 后面添加 -it 会连接到容器的shell进程
    docker  exec -it container_id/container_name bash_commands
    #从容器内拷贝文件到主机上
    docker cp 容器id:容器内路径 目的主机路径
    #提交容器副本使之成为一个新的镜像
    docker commit -m="描述信息" -a="作者" 容器id 要创建的目标镜像名:[tag]
    
    

    容器数据卷

    【容器和宿主机之间数据共享】

    直接命令添加

    docker run -it -v linux_absolut_path:container_absolute_path 镜像名
    #容器内数据只读(ro:read only)
    docker run -it -v linux_absolut_path:container_absolute_path:ro 镜像名
    

    DockerFile添加

    数据卷容器

    【容器和容器之间数据共享】

    #语法,容器1继承容器2
    docker run -it --name 容器名1 --volumes-from 容器名2 镜像名
    【结论】
    容器间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。(没死绝就都有)
    

    DockerFile解析

    • 构建三步骤

    1、编写dockerfile文件

    2、 docker build

    3、docker run

    DockerFile内容基础知识:

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

    大致流程:

    1. docker从基础镜像运行一个容器
    2. 执行一条指令并对容器进行修改
    3. 执行类似docker commit的操作提交一个新的镜像层
    4. docker在基于刚提交的镜像运行一个新的容器
    5. 执行DockerFile中的下一条指令知道所有指令都执行完成

    保留字指令

    • ADD
      • 将主机目录下文件拷贝到镜像,且会自动处理url和tar压缩包
    • COPY
      • 和ADD类似,区别是不会自动解压,从源路径到镜像内目标路径
    • FROM
      • 基础镜像,当前新镜像基于那个镜像拓展
    • RUN
      • 构建容器时要运行的bash命令
    • EXPOSE
      • 创建容器后对外暴露出的端口
    • WORKDIR
      • 创建容器后,终端默认登陆进入的工作目录
    • ENV
      • 构建镜像过程中设置的环境变量
    • VOLUME
      • 容器数据卷,用于数据保存和持久化工作
    • CMD
      • 指定容器启动时要运行的命令,可以有多个,但是只有最后一个会生效,可在docker run 后通过指令进行参数替换
    • ENTRYPOINT
      • 容器启动时要运行的命令,目的和CMD一样,可在docker run 后通过指令进行参数追加
    • ONBUILD
      • 当前镜像被继承使用时,触发该语句后的内容
    • MAINTAINER
      • 镜像维护者的姓名和邮箱地址

    案例

    1、Base镜像(scratch)

    99%都是FROM scratch

    2、自定义mycentos

    dockerfile文件:

    FROM centos
    ENV mypath /tmp
    WORKDIR $mypath
    
    #让它支持vim以及ifconfig
    RUN yum -y install vim
    RUN yum -y install net-tools
    
    EXPOSE 80
    CMD /bin/bash
    

    运行:

    docker build -f /mydocker/dockerfile -t mycentos:1.3 .

    • -f:指定dockerfile文件路径
    • -t:指定镜像名字及标签
    • 注意“."不能忘

    3、自定义镜像tomcat9

    1564060876676

    小总结

    1564108813550

    Docker常用安装

    安装Tomcat

    安装mysql

    docker run -p 3306:3306 --name mysql -v /msuse/mysql/conf:/etc/mysql/conf.d -v /msuse/mysql/logs:/logs -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
    

    安装Redis

    docker run -p 6379:6379 -v /msuse/myredis/data:/data -v /msuse/myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis:3.2 redis-server /usr/local/etc/redis/redis.conf --appendonly yes
    
  • 相关阅读:
    FineUIPro v5.1.0 发布了!
    FineUI十周年纪念版即将发布(基于像素的响应式布局,独此一家)!
    FineUIPro/Mvc/Core/JS v4.2.0 发布了(老牌ASP.NET控件库,WebForms,ASP.NET MVC,Core,JavaScript)!
    选择IT公司的雇主提问
    项目管理趋势
    突发事件下的项目管理
    12-Factor与微服务
    CQRS(Command and Query Responsibility Segregation)与EventSources实例
    阅读理解力的四个层次
    2018年Code Review状态报告
  • 原文地址:https://www.cnblogs.com/yifengGG/p/13081535.html
Copyright © 2020-2023  润新知