Docker开发实践笔记一


声明:本文转载自https://my.oschina.net/u/915967/blog/1606848,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

容器是一个打包了应用和服务的环境。它是一个轻量级的虚拟机,每一个容器都由一组特定的应用和必要的依赖组成。

1、容器的管理操作

1.1创建容器

对于容器常见的命令包括:创建、查看、启动、终止(停止)、删除。

创建容器可以使用docker create和docker run,它们的区别是,docker create创建容器完成后,容器处于停止状态,而docker run创建容器后同时启动容器(相当于执行了:docker create -> docker start)。

docker create 镜像名称  比如:docker create ubuntu  //不带 “:版本号” 时将使用官方最新的镜像。  使用docker ps 可以查看当前正在运行的容器,使用docker ps -a 可以查看所有容器,包括运行中和未运行的容器。

docker run 可以创建交互型容器和后台型容器。

docker run -i -t --name=inspect_shell ubuntu /bin/bash //将创建交互型容器  docker run -d --name=daemon_while ubuntu /bin/bash -c  "while true;do echo hello world;sleep 1;done" //将创建后台型容器  上面--name参数的名称必须是唯一的不能重复。

创建容器时首先会搜索本地是否存在该镜像,如果不存在就从公有仓库下载,否则直接使用本地镜像创建容器,容器的文件系统是在只读的镜像文件上增加一层可读写的文件层,并通过网桥的方式将该网络接口桥接到宿主主机上去,然后该虚拟网络接口分配一个IP地址。

1.2 查看容器

使用docker ps 命令即可,可以跟不同的参数,具体使用查看帮助即可:docker ps --help

docker ps  //只查看当前运行中的容器  docker ps -l  //列出最后创建的容器  docker ps -n=x  //查看最后创建的x个容器  结果中的状态是Exited时,括号时的数字为0时正常退出,其它值都为异常退出。

1.3启动容器

通过docker run 创建的容器直接进行运行状态,而使用docker create创建的容器需要使用docker start来启动它。

docker start 容器ID或容器名称  docker run --restart=always  --name docker_restart -d ubuntu /bin/sh -c  "while rue;do echo hello world;sleep 1;done" 

restart为always是不管容器返回码是什么都会尝试重启容器,另外可以设置成--restart=on-failure:5 来设置非0返回码时重启尝试的次数。

1.4终止容器

正常退出容器使用 docker stop 容器名称或容器ID,另外可以使用docker kill 强制退出容器。

docker stop 容器名称或容器ID docker kill 容器名称或容器ID

1.5删除容器

docker rm 容器ID或容器名称 //只能删除未运行的容器  docker rm -f 容器ID或容器名称 //强制删除,运行中的容器可将删除  docker rm `docker ps -a -q` //批量删除所有容器,-q参数只列出容器的ID

2、容器内信息获取和命令执行

2.1依附容器

依附容器命令只能用在交互型容器中,就是以 -i -t 参数运行的容器,可以依附若干的终端,而且多个终端操作是同步的,就是你在其中一个终端输入了什么,在其它的终端也将显示什么,退中一个终端使用exit退出,所有依附的终端都将退出。

docker run -i -t ubuntu /bin/sh  然后再开另一个终端使用  docker attach ubuntu  //即可以进入交互界面,这样就会有两个终端,而且是同步的。此命令目前输入完后必须按两次回车才正常出现交互界面。  后台型容器是无法使用此命令依赖终端的。

2.2查看容器日志

交互型容器可台通过依附命令直接进入查看日志,而后台型容器可以通过docker logs 命令来查看容器日志。

docker run -d --name =daemon_logs ubuntu /bin/bash -c "for((i=0;1;i++));do echo $i;sleep 1;done;"  //注意这里要使用双引号  docker logs -f deamon_logs //-f 实时查看容器日志  docker logs -f --tail=x daemon_logs //只实时查看最后x行日志  docker logs -f --tail=5 -t daemon_logs //-t查看日志产生的时间

 2.3查看容器进程

docker top可以查看容器内正在运行的进程

docker top 容器ID或容器名称

 2.4查看容器信息

docker inspect用于查看容器的配置信息,包括容器名称、环境变量、运行命令、主机配置、网络配置和数据卷配置等。

docker inspect 容器ID或容器名称

详细使用可以查看帮助,docker inspect --help

2.5容器内执行命令

在容器启动的时候,通常需要指定需要执行的程序,然而有时候我们需要在容器运行之后中途启动另一个程序 。从Docker 1.3开始,我们可以使用docker exec命令在容器中运行新的任务。它可以创建两种任务:后台型任务和交互型任务。

docker exec -d daemon_dave touch /etc/new_config_file //后台型任务  docker exec -i -t daemon_dave /bin/bash //交互型任务,这个和创建交互型容器一样。  注意:运行此命令容器都必须是运行中

 3、容器的导入和导出

用户不仅可以把容器提交到公共服务器上,也可以将容器导出到本地文件系统中,再需要的时候可以重新导入到Docker运行环境中。

容器导出:

docker run -i -t --name=inspect_import ubuntu /bin/bash  然后对容器按需要修改,安装需要的软件等,完成后执行下面的命令导出到本地系统中。  docker export inspect_import > my_container.tar

容器导入:

cat my_container.tar |docker import - imported:container //imported为镜像名称,container为镜像标签(tag)  还可以从url导入网络上的容器: docker import url res:tag  导入成功后,使用docker images 命令可以查看导入的镜像。

 

本文发表于2018年01月15日 00:33
(c)注:本文转载自https://my.oschina.net/u/915967/blog/1606848,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1679 讨论 0 喜欢 1

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1