设为首页 收藏本站
查看: 2678|回复: 0

[经验分享] 《第一本Docker》笔记(三)之Docker入门

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-5-7 08:35:49 | 显示全部楼层 |阅读模式
三、Docker入门(以下运行环境是Cetos6.364bit系统上进行)
   1. 创建容器
      #docker run -I -t ubuntu /bin/bash
      -i 标志保证容器中STDIN是开启的,尽管我们并没有附着到容器中,-t 标志告诉Docker为要创建的容器分配一个伪tty终端。
     附录:在执行这条指令的时候遇到以下问题:
      FATA[0000] Gethttp:///var/run/docker.sock/v1.17/images/search?term=ubuntu: dial unix/var/run/docker.sock: no such file or directory. Are you trying to connect to aTLS-enabled daemon without TLS?
原因:docker服务没有启动:servicedocker start  设置开机启动:chkconfigdocker on
FATA[0000] Cannot connect tothe Docker daemon. Is 'docker -d' running on this host?
原因:docker -d 进程没有启动
尝试解决: docker-d &
报错:
  ====================================================================
   INFO[0000] +jobserveapi(unix:///var/run/docker.sock)  
   INFO[0000] WARNING: You arerunning linux kernel version 2.6.32-431.11.7.el6.ucloud.x86_64, which might beunstable running docker. Please upgrade your kernel to 3.8.0.
   docker: relocation error:docker: symbol dm_task_get_info_with_deferred_remove, version Base not definedin file libdevmapper.so.1.02 with link time reference
   [1]+  Exit 127                docker -d
  ====================================================================
   解决办法:安装必要的插件yumupgrade device-mapper-libs
   执行命令:docker -d&
  继续执行# dockerrun -I -t ubuntu /bin/bash 它的含义是创建一个基于ubuntu镜像的容器,并且使用交互式shell环境。docker run命令先进行本地宿机镜像扫描,如果找不到则会与Docker仓库建立连接并进行相应镜像的下载

2. 常用命令:
  查看镜像
  # docker search ubuntu   #搜索镜像
  # docker pull ubuntu  #下载镜像
  # docker images  #查看本地镜像资源
  # docker images -a :列出所有的images(包含历史)
  # docker images --tree :显示镜像的所有层(layer)
  # docker rmi  <image ID>: 删除一个或多个image
  查看容器
  # docker ps :列出当前所有正在运行的container
  # docker ps -l :列出最近一次启动的container
  # docker ps -a :列出所有的container(包含历史,即运行过的container)
  # docker ps -q :列出最近一次运行的containerID
  针对容器的操作:
  # docker start/stop/restart<container> :开启/停止/重启container
  # docker start[container_id] :再次运行某个container (包括历史container)
  # docker attach[container_id] :连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach 一个container实例)其实就是进入容器
  # docker start -i<container> :启动一个container并进入交互模式(相当于先start,在attach)
  # docker run -i -t<image> /bin/bash :使用image创建container并进入交互模式, login shell是/bin/bash
  # docker run -i -t -p<host_port:contain_port> :映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。
    注:使用start是启动已经创建过得container,使用run则通过image开启一个新的container。
删除容器
# docker rm <container...> :删除一个或多个container
# docker rm `docker ps -a -q`:删除所有的container
# docker ps -a -q | xargsdocker rm :同上, 删除所有的container
3. 容器在创建的时候进行自定义命令操作:
# docker run --name 自定义名称 -I -t <images>/bin/bash
其中,自定义名称包含以下字符:小写字母a-z、大写字母A-Z、数字0-9、下划线、圆点、横线。容器的命名必须是唯一的
4.重新进入重启
     # dockerattach 容器名称
  如果推出容器的shell,容器也会随之停止运行
5.创建守护式容器
# docker run --name <name> -dubuntu /bin/sh -c “while true;do echo hello world;sleep 1;done”
创建一个守护式容器(使用-d参数使容器后台运行)执行某个命令(-c)
实例操作:(参考: http://segmentfault.com/a/1190000000755980
   使用nginx官方image进行实验:
   # docker pull nginx
   生成一个测试页面,存放在某个目录中(例如/opt/nginx/)
   # echo "<h2 >This is nginxofficial container running </h2> <br /> static files:/opt/nginx/index.html"> / opt/nginx/index.html
   创建基于nginx镜像的容器,并且使用-v使容器中默认文件指定到宿机上自定义的网站目录,端口映射:宿机的8000 à容器的80端口  -d参数使容器后台运行
   # docker run --name nginx1.9.0 -v/opt/nginx/:/usr/share/nginx/html:ro -p 8000:80 -d nginx:1.9.0
   将docker容器中的文件复制到宿机中(但反之不能)
   # docker cp nginx1.9.0:/etc/nginx/nginx.conf/opt/nginx/
6.查看容器内部的日志、进程
   # docker logs nginx1.9.0
   # docker logs -f nginx1.9.0  à相当于tail -f
   # docker logs --tail 10 nginx1.9.0 查看最后10行内容
   # docker logs --tail 0 nginx1.9.0 查看最新的日志信息
   # docker top nginx1.9.0
7. 在容器中运行指定的进程
  # docker exec -d nginx1.9.0 touch/opt/nginx/test.txt 在容器内部创建一个空文件
  # docker exec -t -i nginx1.9.0 /bin/bash  在容器中启动一个交互式shell任务
8. 停止守护式容器
  # docker stop nginx1.9.0(或者容器的ID)
9. 设置容器进行自动启动运行,防止某些错误导致容器停止影响业务
  # docker run --restart=always --namenginx1.9.0 -d nginx:1.9.0 /bin/bash -c XX
   --restart标志可以设置为
       always:无论容器的退出代码是什么,Docker都会自动重启该容器
       on-failure:只有当容器的退出代码为非0时才会自动重启
  # docker run --restart=on-failure:5--name  nginx1.9.0 -d nginx:1.9.0 /bin/bash-c XX
   容器退出代码为非0时,Docker会自动重启5次该容器
10. 深入了解容器的信息
  # docker inspect nginx1.9.0
  可以查看关于容器的一些详细信息,包括开放端口,安装路径,配置文件,系统配置等
  # docker inspect --format '{{ .State.Running}}' nginx1.9.0
true
   查看容器的运行状态
  # docker inspect --format '{{.NetworkSettings.IPAddress }}' nginx1.9.0
   查看容器的IP地址
  # docker inspect -f '{{ .Name }} {{.State.Running }}' nginx1.9.0 ubuntu14.04
   /nginx1.9.0 true
/ubuntu14.04 true
查看多个容器的名称和运行情况
11. 删除所有的容器
  # docker rm `docker ps -a -q`



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-64427-1-1.html 上篇帖子: 《第一本Docker》笔记(二)之安装Docker 下篇帖子: docker深入1-导入导出images和container的方式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表