zoukankan      html  css  js  c++  java
  • Docker的安装配置及使用详解

     

    docker logs $CONTAINER_ID #查看docker实例运行日志,确保正常运行
    docker inspect $CONTAINER_ID #docker inspect <image|container> 查看image或container的底层信息
    docker build <path> 寻找path路径下名为的Dockerfile的配置文件,使用此配置生成新的image
    docker build -t repo[:tag] 同上,可以指定repo和可选的tag
    docker build - < <dockerfile> 使用指定的dockerfile配置文件,docker以stdin方式获取内容,使用此配置生成新的image
    docker port <container> <container port> 查看本地哪个端口映射到container的指定端口,其实用docker ps 也可以看到

    基本概念

    Docker 包括三个基本概念

    • 镜像(Image)
    • 容器(Container)
    • 仓库(Repository)

    先理解了这三个概念,就理解了 Docker 的整个生命周期。

    1、docker安装与启动

    复制代码
    
    
    复制代码

    2、镜像的获取与容器的使用

    复制代码
    
    
    复制代码

    3.进入容器 - nsenter 命令

    使用 attach 命令有时候并不方便。当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。 
    nsenter安装 
    nsenter 工具在 util-linux 包2.23版本后包含。 如果系统中 util-linux 包没有该命令,可以按照下面的方法从源码安装。

     

     

    nsenter使用 
       nsenter 可以访问另一个进程的名字空间。nsenter 要正常工作需要有 root 权限。 
       为了连接到容器,你还需要找到容器的第一个进程的 PID,可以通过下面的命令获取。

    PID=$(docker inspect --format "{{ .State.Pid }}" <container>)

       通过这个 PID,就可以连接到这个容器:

    nsenter --target $PID --mount --uts --ipc --net --pid

       更简单的,建议下载 .bashrc_docker,并将内容放到 .bashrc 中。

    wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker;
    echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc

       这个文件中定义了很多方便使用 Docker 的命令,例如 docker-pid 可以获取某个容器的 PID;而 
       docker-enter 可以进入容器或直接在容器内执行命令。

    echo $(docker-pid <container>)
    docker-enter <container> ls
    docker-enter <container> bash

    3、持久化容器与镜像

    3.1 通过容器生成新的镜像

    运行中的镜像称为容器。你可以修改容器(比如删除一个文件),但这些修改不会影响到镜像。不过,你使用docker commit 命令可以把一个正在运行的容器变成一个新的镜像。

        docker commit <container> [repo:tag] # 将一个container固化为一个新的image,后面的repo:tag可选。

    3.2 持久化容器

    export命令用于持久化容器

        docker export <CONTAINER ID> > /tmp/export.tar

    3.3 持久化镜像

    Save命令用于持久化镜像

            docker save 镜像ID > /tmp/save.tar

    3.4 导入持久化container

    删除container 2161509ff65e

            docker rm 2161509ff65e

    导入export.tar文件

    cat /tmp/export.tar | docker import - export:latest

    3.5 导入持久化image

    删除image daa11948e23d

    docker rmi daa11948e23d

    导入save.tar文件

    docker load < /tmp/save.tar

    对image打tag

    docker tag daa11948e23d load:tag

    3.6 export-import与save-load的区别

    导出后再导入(export-import)的镜像会丢失所有的历史,而保存后再加载(save-load)的镜像没有丢失历史和层(layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回滚。(可以执行docker tag 来回滚之前的层)。

    3.7 一些其它命令

    复制代码
    
    
    复制代码

    一些使用技巧

    docker文件存放目录

    Docker实际上把所有东西都放到/var/lib/docker路径下了。

     1 [root@localhost docker]# ls -F 

    2 containers/ devicemapper/ execdriver/ graph/ init/ linkgraph.db repositories-devicemapper volumes/ 

    containers目录当然就是存放容器(container)了,graph目录存放镜像,文件层(file system layer)存放在graph/imageid/layer路径下,这样我们就可以看看文件层里到底有哪些东西,利用这种层级结构可以清楚的看到文件层是如何一层一层叠加起来的。

    一张图总结 Docker 的命令

    这里写图片描述

    转载请务必保留此出处:http://blog.csdn.net/fgf00/article/details/51893771

  • 相关阅读:
    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
    11
    实战 迁移学习 VGG19、ResNet50、InceptionV3 实践 猫狗大战 问题
    tx2系统备份与恢复
    如何在Ubuntu 18.04上安装和卸载TeamViewer
    bzoj 3732 Network (kruskal重构树)
    bzoj2152 聪聪可可 (树形dp)
    牛客 216D 消消乐 (二分图最小点覆盖)
    牛客 197E 01串
    Wannafly挑战赛23
  • 原文地址:https://www.cnblogs.com/williamjie/p/10135092.html
Copyright © 2011-2022 走看看