zoukankan      html  css  js  c++  java
  • docker 容器管理

     
    容器管理
    一. 实验目的:
    1.       熟悉容器的基本工作原理;
    2.       掌握容器操作的常用命令;
    二. 实验环境:
    Ubuntu16.04+Docker
    三. 实验内容:
    1.       练习使用容器操作的常用命令;
    四、 实验练习:
    (一)创建容器
    创建容器命令格式:
    Usage: docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
    问题:
    (1)     如何以ubuntu:14.04作为基础镜像,创建一个容器test1?
    (2)     请使用docker ps -l命令查看,test1的状态?
    (二)启动容器
    有两种情况:
    ① 原来没有这个容器,需要基于一个镜像启动新的容器;
          命令:Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    ② 宿主机本来有一个容器,但是容器处于一个非运行的状态,需要把这个非运行状态的容器启动起来。
          命令:docker start container_ID
    实际上docker run命令相当于docker create+start两个命令
    问题:
    (1)     如何以ubuntu:14.04作为基础镜像,启动一个容器test2?
    请使用docker ps -l命令查看,test2的状态?
    (2)     如何以ubuntu:14.04作为基础镜像,启动一个容器test3, 并安装新的程序nginx?  
     
    (3)     如何以ubuntu:14.04作为基础镜像,以交互方式启动容器test4?
    进入容器中,在/root目录下新建一个文件1.txt,后点击ctrl+p+q来退出但是不结束交互式容器。然后使用docker ps -l命令来查看test4的状态?
    (4)     如何以ubuntu:14.04作为基础镜像,启动守护式容器test5,让其在后台一直输出hello docker?如何查看容器的日志,看看hello docker 是否正常输出?
     
    (5)     使用start命令来启动刚刚创建的test1,并且用docker ps -l命令来查看容器状态有什么变化?
    docker start test1
     
     
    (三)查看本地容器信息
    (1)可使用docker ps命令查看本地的容器。语法如下:
    docker ps [OPTIONS]
    OPTIONS说明:
    -a :显示所有的容器,包括未运行的。
    -f :根据条件过滤显示的内容。
    -l :显示最近创建的容器。
    -n :列出最近创建的n个容器。
    ① 列出当前所有正在运行的container?
    ② 列出所有的container?
    ③ 列出最近一次启动的container? 
    ④ 列出最近创建的5个容器信息?
    (2)可使用docker inspect命令查看容器的所有信息,包含运行情况,存储位置,配置参数和网络配置等。
    docker inspect [OPTIONS] NAME|ID [NAME|ID...]
    OPTIONS说明:
    -f :指定返回值的模板文件。
    -s :显示总的文件大小。
    --type :为指定类型返回JSON。
    ① 如何查看容器test5中的详细信息?
    ② 如何查看容器test5的Ip地址?
    (四)停止、杀死、重启某个docker 容器
    (1)  请试着杀死,停止,重启某个docker容器?
     
    (2)  如何强制停止一个容器?
    (五)查看指定容器的日志记录
    docker logs –f –t [--tail] 容器
    -f:--follow=true/false,一直跟踪日志变化并且返回结果
    -t:--timestamps=true/false,在返回结果上加上时间戳
    --tail string 从日志末尾显示多少行日志, 默认是all
    --since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
    (1)  请一直跟踪容器test5的日志变化,并且在返回结果上加上时间戳?
    (2)  查看容器test5最近30分钟的日志?
    (3)  查看容器test5的日志最后10行,并且在返回结果上加上时间戳?
    (六)删除容器
    当删除容器时,若正在运行,需要先停止删除。
    docker rm [OPTIONS] CONTAINER
    OPTIONS说明:
    -f :通过SIGKILL信号强制删除一个运行中的容器
    -l :移除容器间的网络连接,而非容器本身
    -v :删除与容器关联的卷
    (1)  如何删除所有容器?
     docker rm ‘sudo docker ps -a -q’
    (2)  如果有容器无法删除,应该怎么办?
    sudo docker rm -f 容器名/容器id
    (3)  请查看是否所有容器都被删除?
    docker ps -a
    (4)  以ubuntu:14.04作为基础镜像,启动一个容器test6, 并挂载数据卷/home, 删除容器nginx01,并删除容器挂载的数据卷
    (七)进入容器
    进入容器有三种不同的方法:
    ① docker attach可以attach到一个已经运行的容器的stdin,然后进行命令执行的动作。 请尝试用docker attach进入一个已经运行的容器?
    ② docker exec 也可以进入一个已经运行的容器,然后进行命令执行的动作。就像使用SSH登录服务器一样来操作容器。请尝试用docker exec进入一个已经运行的容器?
    ③ 使用nsenter工具进入
    如何使用nsenter工具来进入容器呢?
    一般来说,需要首先下载nsenter这个工具,它包含在util-linux软件包版本。
    (1)  首先访问该网址找到nsenter工具
    https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.32/
    (2)  下载nsenter工具的源码到我们的主机上
    (3)  解压.tar.gz包
    # tar -xzvf util-linux-2.32.tar.gz
    (4)  进入util-linux-2.32的目录
    # cd util-linux-2.32/
    (5)  输入./configure --without-ncurses命令进行配置
    (6)  输入命令make nsenter来编译nsenter
    (7)  复制nsenter到/usr/local/bin路径下
    # cp nsenter /usr/local/bin
    (8)  运行一个容器,并且找到找到容器的进程PID号(.state.Pid)
    docker run -itd --name test7 ubuntu:14.04   
    docker inspect test7
     
    (9)  通过得到的这个PID,就可以连接到这个容器:
    nsenter --target  $PID  --mount --uts   --ipc   --net   --pid
    (10)在容器中可以查看用户和进程的相关信息
    ps -ef
    (八)导入容器和导出容器
    (1)  导出容器是指导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态,可以使用docker export命令。请把test7容器导出到1.tar中。
    (2)  导入容器是指文件可以使用docker import命令导入到本地仓库成为镜像。请把1.tar导入,并在在导入时候其打上标签test8:latest
     
  • 相关阅读:
    结对项目开始
    团队项目开始
    个人项目总结
    python面向对象
    OSI七层模型
    Django中的orm的惰性机制
    Python装饰器
    python运算符
    python元祖和列表
    Sencha Touch 1.x 快速入门 第三章 布局(2) Card布局
  • 原文地址:https://www.cnblogs.com/duyachao/p/11100640.html
Copyright © 2011-2022 走看看