• docker使用详解


    一、docker简介

      docker 是一个开源的应用容器引擎,docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

      容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

    二、docker的应用场景

    • Web 应用的自动化打包和发布。

    • 自动化测试和持续集成、发布。

    • 在服务型环境中部署和调整数据库或其他的后台应用。

    • 解决软件跨境迁移的问题

    三、docker的安装

      docker在各个平台均可以使用,centos、ubuntu、mac、windows等,这里就不一一列举了,附上各个平台的安装链接

    四、docker的架构

    • 镜像(image):用于创建docker容器的模板
    • 容器(container):独立运行的一个或一组应用,是镜像的实体
    • 仓库(repository):用来保存镜像的

    五、docker进程相关命令

      1、启动docker

    systemctl start docker

      2、停止docker

    systemctl stop docker

      3、查看docker状态

    systemctl status docker

      4、重启docker

    systemctl restart docker

      5、设置开机启动

    systemctl enable docker

    六、docker镜像相关命令

      1、查看镜像,查看本地所有的镜像

    docker images

      2、查询所有镜像的ID

    docker images -q

      3、搜索镜像:从网络中查询需要的镜像

    docker search 镜像的名称

      4、拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号, 如果不指定,则是最新版,如果不知道镜像的版本号,可以去hub.docker.com去查询

    docker pull 镜像名称

      5、删除指定镜像:

    docker rmi 镜像id 

      6、删除所有镜像:

    docker rmi `docker images -q`    # 注意` 是键盘ESC下面的键

    七、docker容器相关命令

      1、查看正在运行容器

    docker ps

      2、查看所有容器

    docker ps -a

      3、创建并启动容器

    复制代码
    docker run 参数 镜像名称:版本号
    
    参数说明:
        * -i:保持容器运行,通常与-t同时使用,加上 it 这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭,
        * -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
        * -d:以守护(后台)模式运行容器,创建一个容器在后台运行,需要使用docker exec 进入容器,退出后,容器不会关闭。
        * -it 创建的容器一般称为交互式容器, -id 创建的容器一般称为守护式容器
        * --name: 为创建的容器命名
        * -p 宿主机端口:容器端口
    
            * -e:环境配置
            * --restart:是否自动重启

    案例:docker run -id --name=community4 -p 8000:8000 -p 2223:22 -p 8005:8005 -e PYTHONIOENCODING=utf-8 --restart=always community:5.0 /start.sh

      docker 默认的的编码是ascii,所以在创建容器的时候,指定 -e PYTHONIOENCODING=utf-8

      在创建容器是添加-–restart=always选项,保证docker服务启动时,容器会自动运行

    复制代码

      4、进入容器

    docker exec 参数 容器id或者容器名 /bin/bash  # 退出容器,容器不会关闭
    示例:docker exec -it haoshun /bin/bash

      5、停止容器

    docker stop 容器名称或者容器id

      6、启动容器

    docker start 容器名称或者容器id

      7、删除容器:如果是运行状态则删除失败,需要停止容器才能删除

    docker rm 容器名称或者容器id

      8、查看容器信息

    docker inspect 同期名称或者容器id

    八、docker数据卷

     

     

       配置数据卷

    docker run  ... -v 宿主机目录(文件):容器内目录(文件)...

      注意事项

    1. 目录必须是绝对路径
    2. 如果目录不存在,会自动创建
    3. 可以挂在多个数据卷

      举例:通过多个-v 可以配置多个数据卷

    docker run -it --name=test2 -v /vagrant/test_data2:/home/test_data2 -v /vagrant/test_data3:/home/test_data3 ubuntu:16.04

    九、docker转镜像

      1、使用容器打包成镜像

    docker commit 容器id 要生成的镜像名:版本号

      2、将镜像打包成压缩文件

    docker save -o 压缩文件名称 要压缩的镜像名:版本号

      3、加载压缩包形式的镜像文件

    docker load -i 压缩文件名称

      注意:通过目录挂载的形式的文件,在通过容器制作镜像的过程中,将不会被打包到镜像中,直接在镜像内的文件则可以被打包到镜像内

    十、dockerfile构建docker镜像文件

    • Dockerfile 是一个文本文件

    • 包含了一条条的指令

    • 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像

    • 对于开发人员:可以为开发团队提供一个完全一直的开发环境

    • 对于测试人员:可以直接那开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作

    • 对于运维人员:在部署时,可以实现应用的无缝移植

     

     

     

    案例需求:自动以centos7镜像

    • 默认登录的路径为/usr

    • 可以使用vim

    1、定义父镜像: FROM centos:7
    2、定义作者信息:MAINTAINER Se7eN_HOU
    3、执行安装vim命令:RUN yum install -y vim   # 注意,-y 表示当执行程序需要选择是会自动选择y,如果没有该参数会一直停留在选择处
    4、执行默认的工作目录:WORKDIR /usr
    5、定义容器执行的命令:CMD /bin/bash

      执行dockerfile生成镜像

    docker build -f dockerfile文件的路径 -t 设置新的镜像的名称和版本号 .  # 注意最后的点,代表生成的镜像路径
    -f 表示dockerfile路径
    -t 设备新镜像的名称和版本号
    最后的. 表示生成镜像的路径,为当前路径

    十一、docker的常用配置

      不同平台的配置方法大同小异,就不一一举例了,但是一下配置确实非常常用的,可自行百度解决。

      1、docker 配置SSH,可以远程访问docker

      2、docker 配置支持中文,默认docker是不支持中文,网上大部分是临时性的解决方案,《docker容器中添加中文字符的支持》中有永久解决办法

      3、《配置docker中的服务跟随docker启动而自动启动

     

  • 相关阅读:
    看完这篇,还不懂JAVA内存模型(JMM)算我输
    pytorch -- 构建自己的Dateset,DataLoader如何使用
    音频基础知识
    【linux】shell脚本调试
    Day10:for循环结构的使用详解
    过滤器(Filter)
    前端研习录(23)——JavaScript数组及其方法合集
    机器学习--贝叶斯网
    寒假训练——第三周(背包DP)
    Metric Similarity Joins Using MapReduce论文总结
  • 原文地址:https://www.cnblogs.com/Se7eN-HOU/p/16261541.html