《第一本Docker》笔记(三)之Docker入门

简介:

三、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`










本文转自 南非波波 51CTO博客,原文链接:http://blog.51cto.com/nanfeibobo/1643570,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
运维 Linux Docker
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
Docker笔记(个人向) 简述,最新高频Linux运维面试题目分享
|
5天前
|
测试技术 Linux 数据库
【Docker项目实战】使用Docker部署Xnote轻量级笔记系统
【6月更文挑战第19天】使用Docker部署Xnote轻量级笔记系统
16 2
|
10天前
|
测试技术 Linux 项目管理
【Docker项目实战】使用Docker部署Note Mark笔记工具
【6月更文挑战第14天】使用Docker部署Note Mark笔记工具
20 4
|
1月前
|
应用服务中间件 持续交付 nginx
【Docker专栏】Docker入门指南:快速构建你的第一个容器
【5月更文挑战第7天】Docker 入门指南:容器化应用利器。了解 Docker 核心概念——镜像、容器和仓库。安装 Docker 后,运行官方 `hello-world` 验证安装,再尝试运行 `nginx` Web 服务器。通过端口映射访问容器内服务,学习管理容器命令。创建自定义镜像,编写 Dockerfile,实现 Python Web 应用容器化。Docker 助力高效开发与运维,探索更多自动化部署与微服务场景。
【Docker专栏】Docker入门指南:快速构建你的第一个容器
|
1月前
|
Cloud Native 测试技术 数据库
【云原生之Docker实战】使用Docker部署flatnotes笔记工具
【5月更文挑战第17天】使用Docker部署flatnotes笔记工具
88 8
|
1月前
|
安全 Linux 数据库
Docker 入门详解
通过遵循这些步骤,你将能够快速入门 Docker 并开始探索容器化的世界,关注 V 哥,技术之路一起成长。
|
1月前
|
Linux Docker 容器
【微服务系列笔记】Docker
docker是一种容器技术,它主要是用来解决软件跨环境迁移的问题和同一环境下依赖冲突问题。 Docker可以运行在Mac, Windows, linux等操作系统上,常用于适用于构建和部署分布式应用、微服务架构。
52 0
【微服务系列笔记】Docker
|
1月前
|
Shell iOS开发 Docker
|
1月前
|
Ubuntu 应用服务中间件 Shell
Docker入门
Docker入门
39 0
|
1月前
|
存储 Ubuntu Linux
Docker 从入门到实践:Docker介绍
Docker 从入门到实践:Docker介绍