Docker概述
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
Docker原理图
Docker Engine:Docker引擎,Docker提供服务程序组件。
Docker Images:创建Docker容器所需要的基础组件。
Docker Container:Docker容器,运行应用(CMS、UP等等)的环境。
Docker安装
安装时需要宿主机处于联网状态
安装Docker Engine
Docker Engine需要使用root用户进行安装,依次执行如下命令:
- yum install docker
安装Docker - service docker start
启动Docker - chkconfig docker on
随系统启动自动启动
加载Docker镜像
基础镜像(基础镜像已经制作好)存放位置/home/maoc/images目录下,安装部署时需要依据自己所在目录,此处列出便于理解以下命令:
- cat /home/maoc/images/ centos-jboss-61-150624.tar | docker import - centos_jboss_test:v1.0
加载一个镜像(包含ssh服务及jboss服务的镜像)到Docker中,并且将镜像的名称设置为centos_jboss_test,将镜像的tag设置为v1.0;名称和Tag值用冒号分隔 - docker images
查看docker中的所有镜像信息
创建Docker容器
命令如下:
- docker run -d -p 8180:8080 -p 223:222 centos_jboss_test:v1.0 /run.sh
依据centos_jboss_test:v1.0镜像创建一个容器,-d代表容器启动后进入后台,-p表示宿主机和容器端口映射,/run.sh表示启动容器时自动运行容器根目录中run.sh文件
-p 8180:8080表示将宿主机的8180端口映射到镜像对应容器中的8080端口;-p 223:222表示将宿主机的223端口映射到镜像对应容器中的222端口;8080端口指的是镜像所起容器中jboss服务器端口,222位镜像所起的容器对应的ssh服务端口;一个宿主机端口只能映射一个docker容器对应的端口,不能同时映射多个。 - docker ps
查看所有正在运行的Docker容器信息 - docker ps –a
查看Docker中所有容器信息 - 访问jboss
http://宿主机IP:8180/
使用Docker容器
进入容器
使用xShell工具进入docker容器中完成相应的应用软件的部署,如下图
部署应用
通过xShell工具进入docker容器中后,应用的部署和远程在服务器上部署应用形式一样,此处不再详细说明。
应用部署完毕后,可以通过docker导出容器命令将应用所在的容器导出成镜像文件,然后通过docker导入容器命令将其导入到镜像中去形成新的镜像。
Docker常用命令
基础命令
-
启动docker
service docker start -
停止docker
service docker stop
镜像操作命令
-
查看docker中所有的镜像信息
docker images -
导入镜像到docker中
cat 镜像文件地址 | docker import - 镜像名称:镜像tag信息
cat /home/maoc/centos-sshd-222-150623.tar | docker import - centos_base_test:v1.0 -
导出docker中的镜像到本地目录中
docker save –o 保存文件地址 导出的docker镜像名称:导出的docker镜像tag值
docker save –o /home/maoc/centos_base_test.tar centos_base_test:v1.0
说明: 导出的镜像tar文件中包含了镜像的元数据信息 -
导入docker中导出的镜像文件(用docker save命令导出的镜像文件)
docker load --input 镜像地址
docker load --input /home/maoc/centos_base_test.tar或docker load < 镜像地址docker load < /home/maoc/centos_base_test.tar说明:导入镜像tar文件中包含了镜像的元数据信息,导入时会覆盖掉docker中已存在的镜像 -
删除docker中的镜像
docker rmi 镜像名称:镜像tag值
docker rmi centos_base_test:v1.0
容器操作命令
-
依据docker镜像创建docker容器
docker run -d -p 宿主机端口:docker容器映射端口 docker镜像名称:docker镜像tag信息 自动运行的shell脚本文件地址(镜像中的地址)
docker run -d -p 8080:8080 -p 222:222 centos_jboss_test:v1.0 /run.sh
说明:-d标识在后台运行docker容器
-p端口映射,将宿主机的端口映射到docker容器中,如果一个宿主机上有多个docker容器,则一个宿主机的端口不能同时映射多个docker容器端口;多个端口映射可以通过多个-p参数设定
centos_jboss_test:v1.0表示docker容器创建所依赖的docker镜像
/run.sh 表示docker容器创建完毕后自动执行的shell命令文件 -
查看docker容器信息
docker ps -a -
查看运行中的docker容器信息
docker ps -
停止运行docker容器
docker stop docker容器标识
docker stop 8c914bb46ae5
说明:docker容器标识可以通过 docker ps -a 获取到 -
启动已停止的docker容器
docker start docker容器标识
docker start 8c914bb46ae5
说明:docker容器标识可以通过 docker ps -a 获取到 -
重启运行中的docker容器
docker restart docker容器标识
docker restart 8c914bb46ae5
说明:docker容器标识可以通过 docker ps -a 获取到 -
导出docker容器
docker export docker容器标识 > 文件存放地址
docker export 8c914bb46ae5 > /home/maoc/centos_jboss_test_container.tar
说明:docker容器标识可以通过 docker ps -a 获取到 -
导入docker容器文件到docker镜像中
cat docker容器文件地址 | docker import - 镜像名称:镜像tag信息
cat /home/maoc/centos_jboss_test_container.tar | docker import - centos_jboss_test:v1.0 -
删除docker容器
docker rm –f docker容器标识
docker rm -f 8c914bb46ae5
说明:docker容器标识可以通过 docker ps -a 获取到
-f表示如果容器处于运行状态也要删除,如果不带-f参数只能删除非运行中的docker容器 -
进入容器
docker exec -it 775c7c9ee1e1 /bin/bash