Docker的安装配置及使用详解
2016-07-25 22:21
856 查看
基本概念
Docker包括三个基本概念镜像(Image)
容器(Container)
仓库(Repository)
先理解了这三个概念,就理解了Docker的整个生命周期。
1、docker安装与启动
yuminstall-yepel-release yuminstalldocker-io#安装docker #配置文件/etc/sysconfig/docker chkconfigdockeron#加入开机启动 servicedockerstart#启动docker服务 #基本信息查看 dockerversion#查看docker的版本号,包括客户端、服务端、依赖的Go等 dockerinfo#查看系统(docker)层面信息,包括管理的images,containers数等 dockerpullcentos下载 dockerimages[centos]查看 dockerrun-i-tcentos/bin/bash
2、镜像的获取与容器的使用
#搜索镜像 dockersearch<image>#在dockerindex中搜索image #下载镜像 dockerpull<image>#从dockerregistryserver中下拉image #查看镜像 dockerimages:#列出images dockerimages-a#列出所有的images(包含历史) dockerrmi<imageID>:#删除一个或多个image #使用镜像创建容器 dockerrun-i-tsauloal/ubuntu14.04 dockerrun-i-tsauloal/ubuntu14.04/bin/bash#创建一个容器,让其中运行 bash应用,退出后容器关闭 #查看容器 dockerps:列出当前所有正在运行的container dockerps-l:列出最近一次启动的container dockerps-a:列出所有的container(包含历史,即运行过的container) dockerps-q:列出最近一次运行的containerID #再次启动容器 dockerstart/stop/restart<container>#:开启/停止/重启container dockerstart[container_id]#:再次运行某个container(包括历史container) dockerattach[container_id]#:连接一个正在运行的container实例(即实例须 为start状态,可以多个窗口同时attach一个container实例) dockerstart-i<container>#:启动一个container并进入交互模式(相当于先 start,在attach) dockerrun-i-t<image>/bin/bash#:使用image创建container并进入交互模 式,loginshell是/bin/bash dockerrun-i-t-p<host_port:contain_port>#:映射HOST端口到容器,方便 外部访问容器内服务,host_port可以省略,省略表示把container_port映射到 一个动态端口。 #注:使用start是启动已经创建过得container,使用run则通过image开启一个新的 container。 #删除容器 dockerrm<container...>#:删除一个或多个container dockerrm`dockerps-a-q`#:删除所有的container dockerps-a-q|xargsdockerrm#:同上,删除所有的container
3.进入容器-nsenter命令
使用attach命令有时候并不方便。当多个窗口同时attach到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作了。
nsenter安装
nsenter工具在util-linux包2.23版本后包含。如果系统中util-linux包没有该命令,可以按照下面的方法从源码安装。
cd/usr/src;wgethttps://www.kernel.org/pub/linux/utils/util-linux/v2.28/util-linux-2.28.tar.gz ./configure--without-ncurses makensenter&&sudocpnsenter/usr/local/bin
nsenter使用
nsenter可以访问另一个进程的名字空间。nsenter要正常工作需要有root权限。
为了连接到容器,你还需要找到容器的第一个进程的PID,可以通过下面的命令获取。
PID=$(dockerinspect--format"{{.State.Pid}}"<container>)
通过这个PID,就可以连接到这个容器:
nsenter--target$PID--mount--uts--ipc--net--pid
更简单的,建议下载.bashrc_docker,并将内容放到.bashrc中。
wget-P~https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker;echo"[-f~/.bashrc_docker]&&.~/.bashrc_docker">>~/.bashrc;source~/.bashrc
这个文件中定义了很多方便使用Docker的命令,例如docker-pid可以获取某个容器的PID;而
docker-enter可以进入容器或直接在容器内执行命令。
echo$(docker-pid<container>) docker-enter<container>ls docker-enter<container>bash
3、持久化容器与镜像
3.1通过容器生成新的镜像
运行中的镜像称为容器。你可以修改容器(比如删除一个文件),但这些修改不会影响到镜像。不过,你使用dockercommit命令可以把一个正在运行的容器变成一个新的镜像。
dockercommit<container>[repo:tag]#将一个container固化为一个新的image,后面的repo:tag可选。
3.2持久化容器
export命令用于持久化容器dockerexport<CONTAINERID>>/tmp/export.tar
3.3持久化镜像
Save命令用于持久化镜像dockersave镜像ID>/tmp/save.tar
3.4导入持久化container
删除container2161509ff65e
dockerrm2161509ff65e
导入export.tar文件
cat/tmp/export.tar|dockerimport-export:latest
3.5导入持久化image
删除imagedaa11948e23ddockerrmidaa11948e23d
导入save.tar文件
dockerload</tmp/save.tar
对image打tag
dockertagdaa11948e23dload:tag
3.6export-import与save-load的区别
导出后再导入(export-import)的镜像会丢失所有的历史,而保存后再加载(save-load)的镜像没有丢失历史和层(layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回滚。(可以执行dockertag来回滚之前的层)。3.7一些其它命令
dockerlogs$CONTAINER_ID#查看docker实例运行日志,确保正常运行 dockerinspect$CONTAINER_ID#dockerinspect<image|container>查看image或container的底层信息 dockerbuild<path>寻找path路径下名为的Dockerfile的配置文件,使用此配置生成新的image dockerbuild-trepo[:tag]同上,可以指定repo和可选的tag dockerbuild-<<dockerfile>使用指定的dockerfile配置文件,docker以stdin方式获取内容,使用此配置生成新的image dockerport<container><containerport>查看本地哪个端口映射到container的指定端口,其实用dockerps也可以看到
一些使用技巧
docker文件存放目录
Docker实际上把所有东西都放到/var/lib/docker路径下了。[root@localhostdocker]#ls-F
containers/devicemapper/execdriver/graph/init/linkgraph.dbrepositories-devicemappervolumes/
containers目录当然就是存放容器(container)了,graph目录存放镜像,文件层(filesystemlayer)存放在graph/imageid/layer路径下,这样我们就可以看看文件层里到底有哪些东西,利用这种层级结构可以清楚的看到文件层是如何一层一层叠加起来的。
一张图总结Docker的命令
转载请务必保留此出处:
相关文章推荐
- Docker数据管理:Named volume
- Haproxy+etcd+confd+Docker搭建节点自动发现的高可用负载均衡框架
- 利用docker-compose实现elk+redice的但宿主机环境搭建
- 用 Docker 构建 Serverless 应用
- Mac 安装运行 Docker for Mac
- 用docker运行jenkins镜像
- 嗡汤圆的Docker自学笔记以及应用部署实例
- docker api 获取stats数据的方式
- Systemd方式Docker代理服务器设定
- Docker 常用命令
- Docker1.12 + Swarm 构建动态微服务应用
- 在Docker容器中进行Flask应用的开发
- docker命令大全
- mysql 5.7 docker 主从复制架构搭建教程
- 使用Docker开发你的PHP应用
- mysql 5.7 docker 主从复制架构搭建教程
- docker daemon log
- centos7 docker安装
- kubernetes+docker监控之Docker监控——cadvisor
- 基于Spring Boot和Spring Cloud实现微服务架构学习(六)-Docker应用