zoukankan      html  css  js  c++  java
  • Docker入门实践

     Docker是一门很成熟的容器技术,类似虚拟机技术主要用做环境的隔离,方便环境的复制镜像,虚拟机是基于操作系统这一层的,而Docker更加的轻量级,像是“应用”层级的。比如我需要一个MySQL环境、一个Nginx环境、一个netcore运行环境等等。

     有两个非常重要的概念要搞明白

    镜像Images:做好的环境,存储在仓库,有点像SVN/Git,有点像你做好的一个系统盘,它存的就是环境,比如一个nginx的镜像。

    容器Containers:一个镜像在本机上的运行实例就是一个容器,可以运行多个容器。比如我从远端pull一个nginx的镜像,然后在本机运行这个nginx,这就是形成了一个容器。

    这两个之间的关系就像类与实例化之后的对象一样。

    现在好多软件都提供Docker形式的分发了,镜像的查找可以登录https://hub.docker.com/查找。需要什么环境,直接pull到本机,然后run运行,非常方便,不用在本机安装环境了。可以把自己配置好的环境提交成一个镜像,然后在用的地方直接pull and run, 这样就不用担心环境不一致的问题了,非常方便复制且环境一致。

    下面我以CentOS 7.2为例,运行一个nginx的容器。

    # 更换源为国内
    cd /etc/yun.repos.d
    ls
    mv CentOS-Base.repo CentOS-Base.repo.backup
    wget http://mirrors.163.com/.help/CenOS7-Base-163.repo
    yum makecache
    yum -y update
    
    # 安装 (通过官方sh脚本)
    wget https://get.docker.com
    mv index.html docker.sh
    sh docker.sh
    # 当前登录用户
    sudo usermod -aG docker root
    
    # 启动停止,和普通服务一样
    service docker start
    
    # 查看信息
    docker info
    docker version
    
    # -------------
    # 概念,要特别理解熟悉镜像(images)和容器(container)
    # images就像远程服务器SVN上的代码(其实是程序环境,比如centOS,nginx,netcore....),可以拉下来编译运行
    # container就是本机运行一个images产生的环境
    
    # 常用命令,不知道的,--help查看
    
    # 镜像操作
    docker images
    # https://hub.docker.com
    docker search xxx
    docker pull xxx
    docker rmi xxx
    
    # 容器操作
    docker run xxxxx
    docker rm xxx
    docker start xxx
    docker stop xxx
    
    docker attach xxx
    docker exec -t -i xxx /bin/bash
    
    docker run xxx yum install soft
    
    docker cp xxx:/container_path ospath
    
    # 进阶 > 提交

    docker容器运行后,通常是后台运行的,怎么进入容器查看运行情况呢,有下面几个办法 

    # 直接在外面查看容器运行的日志
    docker logs xxx
    
    # 进到容器且显示当前运行的程序的终端
    # 退出时按Ctrl+P+Q,一般有点卡,这个界面是只读的,没法交互
    docker attach xxxx
    
    # 进到容器里,可以bash交互的
    docker exec -t -i b2d28b4aa923 /bin/bash

    使用docker exec进入容器后,就像ssh进入一个Linux环境一样,完全可以控制系统了,比如查看文件路径,打开一个文件等等。在机器与容器之间copy文件是一个常见的场景,但是,容器里的文件结果是怎么样的,一个文件放在那个路径下怎么知道,这时用docker exe就很方便了。比如我运行一个nginx的容器,我需要把网站的文件copy进去,但我不知道应该容器里网站文件应该放在什么地方,可以这样做。进入容器后,注意看系统提示都变了,然后我就可以查找nginx网站的路径,退出时exit退到机器

    # 把一个文件copy到容器nginx网站路径下
    docker cp my.html b2d28b4aa923:/user/share/nginx/html/my.html
    
    # 也可以反过来copy
    docker cp xxx:/user/file /root/file
    
    # 容器里的文件路径为 容器ID或名称:容器里的路径

    参考:https://yeasy.gitbooks.io/docker_practice/content/container/run.html

  • 相关阅读:
    clear session on close of browser jsp
    [SQL Server]从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值。
    Windows Server 2012上安装.NET Framework 3.5
    SqlServer安装时的选项说明
    js 动态控制 input 框 的只读属性
    svn备份与还原_脚本_(dump命令)
    几种任务调度的 Java 实现方法与比较
    在WordPress正文顶端或者末尾插入固定的内容
    TODO
    fileUpload(草稿)
  • 原文地址:https://www.cnblogs.com/chy710/p/9435936.html
Copyright © 2011-2022 走看看