博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker 容器管理
阅读量:6156 次
发布时间:2019-06-21

本文共 3106 字,大约阅读时间需要 10 分钟。

 
容器管理
一. 实验目的:
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工具的源码到我们的主机上
#wget
(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
 

转载于:https://www.cnblogs.com/duyachao/p/11100640.html

你可能感兴趣的文章
Sentinel 1.5.0 正式发布,引入 Reactive 支持
查看>>
数据库之MySQL
查看>>
2019/1/15 批量删除数据库相关数据
查看>>
数据类型的一些方法
查看>>
Webpack 2 中一些常见的优化措施
查看>>
移动端响应式
查看>>
js中var、let、const的区别
查看>>
简洁优雅地实现夜间模式
查看>>
react学习总结
查看>>
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
must implement java.io.Serializable hessian
查看>>
Microsoft Licenses Flash Lite for Windows Mobile Users
查看>>
HDOJ 2020 绝对值排序
查看>>
HDOJ/HDU 2560 Buildings(嗯~水题)
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
[20170628]12C ORA-54032.txt
查看>>
linux运维人员的成功面试总结案例分享
查看>>