查询容器
docker ps 
只能查询到正在运行的docker镜像;
如果添加上-a的选项,则会显示所有的(包括已经exit,未启动)的容器

基于一个镜像来构建(run)容器,并启动

docker run -i -t centos /bin/bash

-i 代表要运行的docker提供的标准输入(STDIN);
-t 代表tty,启动一个伪终端;
/bin/bash 代表告知docker要启动的应用程序/bin/bash(一种Unix的shell应用)。
docker容器的命名方式:
 docker run --name centons7 -i -t centso /bin/bash 
这样就指定了docker的名称(默认docker会随机生成的名称),但是无法通过docker images看到名称,只能是启动之后,通过docker ps来看到docker的名称;
对于docker的start,以及attach操作,一定是在docker的run之后(run可以理解为加载到了内存中),才可以进行操作,run之后的exit只是容器退出了当前的shell,仍然处于加载的状态。
docker run可以理解为一个复合命令,build container & docker start & docker attach
 

docker使用的正常姿势

1.docker run来创建docker container,可以指定名称,资源;如果指定参数为 -it 可以实现attach的效果;

2.docker start dockerName来启动一个已经创建的container,其中dockerName是通过ps( -a)来获取,如果在run的时候已经起了一个名字则直接拿来用;
3.docker attach 进入到一个已经启动的container的shell(命令行)
4.通过命令行exit来退出;一旦exit之后,就意味着container被stop了;如果想要再次使用就需要进行start;

docker exec

docker exec是指对于已经被attach(run -i -t或者attach)的容器(container)进行操作;如果已经被exit的container是无法使用exec的。
exec有两类操作:
  一类是后台操作,只是默默的在后台执行一个操作:docker exec -d uv touch /opt/test.txt;
  第二类是终端交互,进入到用户的shell(伪tty),进行操作,docker exec -i -t uv /bin/bash
  另外,docker exec可以进入到docker run -d之后的容器命令行,attach对于-d的容器无法进入;

docker中指定HostName

  在docker里面无法使用hostnamectl来设置机器名称;可以通过
   docker run -h hostname 
  的方式来指定hostname。
docker run的-d指令
  -d选项代表docker进程的运行方式是守护进程方式(daemon),可以理解为在“后台执行”。但是如果docker run在最后指定了CMD,无论这个CMD是指令还是执行脚本,docker进程的使命就是执行命令,命令执行完毕,docker进程释放;所以-d的价值其实在于/bin/bash,或者执行脚本中包含有
   tail -f /dev/null 
  这类指令,可以将进程Hold住;否则就会出现执行完脚本之后docker退出(通过docker ps -a看到docker状态已经是Exit)。
docker仓库拉取
 一旦从docker仓库中拉取过来,他的名字就发生了变化,比如从内网的私服10.1.108.108:5000中拉取docker,容器的名称就是10.1.108.108:5000/XXX,这是因为这个名字在私服里面就是这个名字,那么这个名字的前缀是因为制作镜像的时候,为了能够push到指定仓库(这里是10.1.108.108)才这样起名字。run的时候就需要添加这个前缀:
   sudo docker run --name registry --restart=always -d -p : 10.1.108.108:/registry
 
docker的卸载

yum list installed | grep docker
docker-engine.x86_64 1.7.-.el7.centos installed
yum -y remove docker-engine.x86_64
docker的异常处理
1. Error running DeleteDevice dm_task_run failed
重启docker即可

2. Error starting daemon: error initializing graphdriver: \"/var/lib/docker\" contains several valid graphdrivers: devicemapper, overlay; Please cleanup or explicitly choose storage driver (-s <DRIVER>)
到/var/lib/docker根据情况,将下面的overlay或者devicemapper文件夹删掉即可。这种情况发生在使用采用dc/os安装后,原有的devicemapper模式修改成了overlay,但是docker同时只能支持一种存储模式。

最新文章

  1. Maven 命令
  2. Linux 批量修改文件名
  3. CentOS设置防火墙开放端口
  4. Asp.Net Web API 2第十六课——Parameter Binding in ASP.NET Web API(参数绑定)
  5. DB系统预警联系人API
  6. ubuntu下搭建lamp
  7. git学习笔记11-git多人协作-实际多人怎么开发
  8. python(4)&ndash;yield实现异步
  9. wampserver安装后 mysql 所有数据库丢失的解决方案
  10. [转]Animation 动画详解(一)——alpha、scale、translate、rotate、set的xml属性及用法
  11. python面对对象编程---------6:抽象基类
  12. linux dd命令测试U盘读写速度
  13. java中如果需要精确的计算答案,请避免使用double类型与float类型
  14. 编程算法 - 萨鲁曼的军队(Saruman&amp;#39;s Army) 代码(C)
  15. angular 引入编辑器遇到的各种问题。。。
  16. shiro三连斩之第二斩(SSM)
  17. Robot Framework 入门教程总结
  18. MSI/MSI-X Capability结构 (转)
  19. AngularJs ng-repeat用法二$parent.$index
  20. 页面添加友盟(CNZZ)统计和事件追踪

热门文章

  1. Android 属性动画框架 ObjectAnimator、ValueAnimator ,这一篇就够了
  2. servletResponse writer输出数据
  3. ASP.NET页面间传值的几种方式
  4. null的比较问题
  5. PHP下最好用的富文本HTML过滤器:HTMLPurifier使用教程
  6. JAVA使用并行流(ParallelStream)时要注意的一些问题
  7. Jenkins:使用Git Parameter插件实现tag或分支的选择性构建
  8. 【Caffe】源码解析----caffe.proto (转载)
  9. 如何编译文件(gcc + nasm)
  10. Objective-C/C++混编编译器设置