• 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

  • 相关阅读:
    Oracle Core 学习笔记二 Transactions 和 Consistency 说明
    Oracle AUTO_SPACE_ADVISOR_JOB 说明
    Windows 下 ftp 上传文件 脚本
    Oracle 11g 中 Direct path reads 特性 说明
    Linux 使用 wget 下载 Oracle 软件说明
    Oracle 10g read by other session 等待 说明
    Oracle 11g RAC INS06006 Passwordless SSH connectivity not set up between the following node(s) 解决方法
    SecureCRT 工具 上传下载数据 与 ASCII、Xmodem、Ymodem 、Zmodem 说明
    Oracle RAC root.sh 报错 Timed out waiting for the CRS stack to start 解决方法
    Oracle RESETLOGS 和 NORESETLOGS 区别说明
  • 原文地址:https://www.cnblogs.com/williamjie/p/10135092.html
Copyright © 2020-2023  润新知