zoukankan      html  css  js  c++  java
  • Docker(Linux)学习笔记以及Redis/MariaDB的容器使用后台全自动启动

    1:Docker安装,由于Docker后续pull镜像的服务器默认是在国外的,速度实在是太慢,这里使用阿里云的镜像

    阿里云的Docker CE 镜像源站进行安装 docker
    
    ===========Ubuntu 14.04/16.04(使用 apt-get 进行安装)======
    
    # step 1: 安装必要的一些系统工具
    sudo apt-get update
    sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    
    # step 2: 安装GPG证书
    curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    
    # Step 3: 写入软件源信息
    sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    
    # Step 4: 更新并安装Docker-CE
    sudo apt-get -y update
    sudo apt-get -y install docker-ce
    
    
    # 安装指定版本的Docker-CE:
    # Step 1: 查找Docker-CE的版本:
    # apt-cache madison docker-ce
    #   docker-ce | 17.03.1~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
    #   docker-ce | 17.03.0~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
    # Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
    # sudo apt-get -y install docker-ce=[VERSION]
    
    
    =========CentOS 7(使用 yum 进行安装)======
    
    # step 1: 安装必要的一些系统工具
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    # Step 2: 添加软件源信息
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    # Step 3: 更新并安装Docker-CE
    sudo yum makecache fast
    sudo yum -y install docker-ce
    # Step 4: 开启Docker服务
    sudo service docker start
    
    # 注意:
    # 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
    # vim /etc/yum.repos.d/docker-ee.repo
    #   将[docker-ce-test]下方的enabled=0修改为enabled=1
    #
    # 安装指定版本的Docker-CE:
    # Step 1: 查找Docker-CE的版本:
    # yum list docker-ce.x86_64 --showduplicates | sort -r
    #   Loading mirror speeds from cached hostfile
    #   Loaded plugins: branch, fastestmirror, langpacks
    #   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
    #   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
    #   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
    #   Available Packages
    # Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
    # sudo yum -y install docker-ce-[VERSION]
    
    
    ======安装校验Docker是否成功
    
    root@fengge:$ docker version
    View Code

    check一下是否安装成功!

    2:Docker常用的一些指令

    ========Docker 拉取一个redis镜像并后台启动
    docker search redis;
    docker pull redis:latest;
    
    docker run --name zrfredis -p 6379:6379 -d redis:latest redis-server
    
    docker stop redis容器id;
    docker start redis 容器id;
    
    
    网上有些文章说,要让docker 的容器自动在开机启动,是写脚本,比如在 rc.local 中写。
    其实完全没必要这么麻烦,docker 有相关指令,docker run 指令中加入 --restart=always 就行。
    sudo docker run --restart=always .....
    
    如果创建时未指定 --restart=always ,可通过update 命令设置
    docker update --restart=always xxx
    
    
    ==》 docker run --name zrfredis03 -p 6382:6379 -d --restart=always redis redis-server
    
    ==》docker run --name zrfmysql01 -p 3308:3306 -d --restart=always -e MYSQL_ROOT_PASSWORD=aoe88 mariadb
    
    =============
    我的阿里云镜像配置
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://qq_T_a9h7mv3n.mirror.aliyuncs.com"]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    
    ============================
    一、普通指令
    
    启动 Docker
    sudo systemctl start docker
    
    停止 Docker
    sudo systemctl stop docker
    
    普通重启 Docker
    sudo systemctl restart docker
    
    修改配置后重启 Docker
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    查看版本
    docker version
    
    查看Docker 信息
    docker info
    
    Docker 帮助
    docker --help
     
    
    二、镜像命令
    
    列出本机Docker上已经安装的镜像:
    docker images
    
    搜索Docker hub上面的镜像
    
    # 普通搜索,以Tomcat为例
    docker search tomcat
    
    # 搜索star大于50的镜像实例
    docker search -s 50 tomcat
    
    从Docker Hub上面下载镜像
    
    # 以下载tomcat为例
    docker pull tomcat[:version]
    删除本地的某一个镜像
    
    
    # 以删除mysql为例
    docker rmi mysql[:version]
    # 通过镜像ID删除
    docker rmi -f 镜像ID
    # 通过镜像ID删除多个
    docker rmi -f 镜像名1:TAG 镜像名2:TAG 
    # 删除全部
    # docker images -qa : 获取所有镜像ID
    docker rmi -f $(docker images -qa)
    
    镜像打包与运行
    
    
    #打包一个我们自己的 mysql
    docker commit -a fengge -m="package my tomcat" 要打包的镜像ID fengge/mysql:1.0
    # -a : 作者名称
    # -m : 打包信息
    
    #启动我们自己打包生成的 mysql
    docker run -it -p 3308:3306 fengge/mysql:1.0
    
     
    三、容器命令
    
    启动容器
    
    
    # 新建并进入容器,最后一个为本地容器的ID  
    docker run -it --name="rivercentos001" 9f38484d220f
    
     # 为容器启一个名称
     -name="新容器名称"
     # 后台运行容器,并返回容器ID,也就是启动守护士容器
     -d 
     # 以交互模式运行容器,通常与-t同时使用.
     -i
     # 为容器重新分配一个伪终端,通过与-i同时使用
     -t 
     # 随机端口映射 [大写P]
     -P
     # 端口映射 [小写P]
     -p
     # 数据卷 加参数 ro:容器内的目录只读,不可写
     -v /宿主机绝对路径目录:/容器内目录[:ro] 镜像名
     
    
    查看当前正在运行的Docker 容器
    
    docker ps
    # 参数
    # 列出当前正在运行的以及历史上运行过的
    -a
    # 显示最近创建的容器
    -l
    # 显示最近创建的N个容器
    -n
    # 静默模式,只显示容器编号
    -q
    # 不截断输出
    --no-trunc
    
    退出容器
    
    # 退出并停止
    exit
    
    # 容器不停止退出
    ctrl+P+Q
    
    启动容器
    docker start 容器ID或容器name
    
    
    重启容器
    docker restart 容器ID或容器name
    
    停止
    docker stop 容器ID或容器name
    
    强制停止
    docker kill 容器ID或容器name
    
    删除容器
    
    
    # 删除已经停止的容器
    docker rm 容器ID或容器name 
    # 强制删除已经停止或正在运行的容器
    docker rm -f  容器ID或容器name 
    
    一次性删除所有正在运行的容器
    docker rm -f $(docker ps -qa)
    
    重新进入容器
    
    # 第一种方式
    docker attach 容器ID或容器名称
    # 第二种方式{隔山打牛式,在宿主机向容器发送命令并获取结果}
    docker exec -t 容器ID或容器名称 ls# 列出文件列表
    # 交互
    docker exec -it rivertomcat  /bin/bash
    从容器内拷贝文件到宿主机
    
    docker cp 容器ID或容器名称:/文件路径与文件名 宿主机地址
     # 例,拷贝容器river的aaa文件夹下的a.txt到宿主机的当前位置 
     docker cp river:/aaa/a.txt .
     四、日志命令
    
    
    docker logs -f -t --tail 10 容器ID或容器名称
    # 加入的时间戳
    -t
    # 跟随最新的日志打印
    -f
    # 输出最后几行的日志
    --tail 行数
    
    # 启动一个centos,并且每两秒在Console输出一个Hello fengge
    docker run -d --name river centos /bin/sh -c "while true;do echo hello fengge;sleep 2;done"
    # 查看最后10行的日志
    docker logs -f -t --tail 10 river
    
    #查看容器内的进程
    docker top 容器ID或容器名称
    
     
    
    五、DockerFile解析
    
    FROM 基础镜像,当前新镜像是基于哪个镜像的。
    
    MAINTAINER 镜像维护者的姓名和邮箱地址。
    
    RUN 容器构建时需要运行的命令。
    
    EXPOSE 当前容器对外暴露出的端口。
    
    WORKDIR 指定在创建容器后,终端默认登陆的进来工作目录,也不是运行并登录进来的当前目录位置。
    
    ENV 用来构建镜像过程中设置环境变量。
    
    ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包。
    
    COPY 类似ADD,但只是复制,不带解压压缩包的功能。
    
    VOLUME 容器数据卷,用于数据保存和持久化工作。
    
    CMD 指定一个容器启动时要运行的命令,DockerFile中可以有多个CMD指令,但只有最后一个会生效执行。
    
    ENTRYPOINT 
    
    指定一个容器启动时要运行的命令
    
    ENTRYPOINT的作用和CMD一样,都是在指定容器启动程序及参数
    
    相当于CMD的升级版本,CMD只能执行一条命令,运行时如果加一些参数是不行的.但如果把CMD替换成ENTRYPOINT就可以在Run镜像的时候在尾部追回指令.
    
    简单的说如果Run镜像的时候追回了命令,CMD会用追回的覆盖掉旧的,ENTRYPOINT会追回执行。
    
    ONBUILD 当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild被触发。
    View Code

    3:直接上学习的一些主要的截图(Redis/MariaDB的容器使用后台全自动启动):

      设置Redis/MariaDB容器后台全自动启动

    重启Linux以及关机开机Linux系统后,发现相关容器已经启动

     

    客户端连接Docker中的Redis容器实例成功!

     

    有时候我们需要直接进入如 Redis的Docker容器中

  • 相关阅读:
    OpenMp之reduction求和
    C++中的字节对齐
    java mail邮件发送(带附件) 支持SSL
    linux下通过命令启动多个终端运行对应的命令和程序
    JAVA数组的定义及用法
    ThreadPoolExecutor使用介绍
    命令拷屏之程序分析
    java实现第五届蓝桥杯供水设施
    java实现第五届蓝桥杯供水设施
    java实现第五届蓝桥杯供水设施
  • 原文地址:https://www.cnblogs.com/Fengge518/p/12005714.html
Copyright © 2011-2022 走看看