Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台,对企业的云服务部署是有非常广泛的应用前景。
Docker是一个云开源项目,托管在github,任何人都可以通过 git clone 或者fork参与进来,本身是基于linux的容器技术,采用当时如日中天google新推出的Go语言实现。采用apache 2.0协议开源,建议使用linux系统安装docker,会大大提高效率,因为docker底层可以复用linux系统的服务,如果运行在其他平台还需要在系统上多开启一个docker虚拟机环境
Docker通常用于如下场景:
web应用的自动化打包和发布;
自动化测试和持续集成、发布;
在服务型环境中部署和调整数据库或其他的后台应用;
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
1、搜索镜像,可以从docker远程版本库中搜索指定的镜像
docker search 镜像名字
2、下载容器镜像
例如镜像名字是docker.io/learn/tutorial
docker pull docker.io/learn/tutorial
执行命令下载镜像到当前文件夹
3、运行下载的镜像并测试是否正常工作
$docker run learn/tutorial echo “hello word”
4、在容器中安装程序
$docker run learn/tutorial apt-get install -y ping
–查看当前运行的容器 docker ps
–查看当前所有容器的状态 docker ps -a
–删除\启动\停止 当前容器 docker rm id、docker start id、docker stop id
5、当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker中保存状态的过程称之为committing,它保存的新旧状态之间的区别,从而产生一个新的镜像版本。
48534fd1cb0e docker.io/learn/tutorial “apt-get install -…” About a minute ago Exited (0) About a minute ago sleepy_northcutt
[root@localhost downloadFiles]# docker commit 485 learn/ping (其中485为相似ID,执行成功后会返回一个新的镜像版本ID)
sha256:958539d6a7f8067e05f7dc350eadd0ad0ad08e49112714a530b700d887ee5e0a
6、运行新的镜像
$docker run lean/ping ping www.baidu.com
7查看当前运行中的镜像
docker ps 或者详细查看docker inspect id或id前几位
8发布镜像
使用docker login 登录远程仓库
sudo docker login 远程仓库地址
输入相应的账号和秘钥
通过容器生成镜像
docker commit -m ‘提交信息’ -a ‘作者信息’ a7e 镜像名:版本号
可以根据镜像名字或者ID为它创建一个标签,缺省为latest
docker tag 镜像名 远程仓库地址[:镜像版本号]
推送镜像
docker push 远程仓库地址[:镜像版本号]
9发布一个web应用到docker容器
搜索tomcat镜像
docker search tomcat
拉取tomcat镜像到主机
docker pull docker.io/tomcat
启动tomcat,其中8081是外围访问端口,后者8080是容器内部端口
docker run -p 8081:8080 docker.io/tomcat
从主机中进入容器
docker exec -it 容器ID /bin/bash –/bin/bash 代表进入容器后执行bash命令,否则容器会退出,此时可以查看当前的tomcat的安装地址
首先要把war包复制到容器中
主机复制到容器
sudo docker cp host_path containerID:container_path
容器复制到主机
sudo docker cp containerID:container_path host_path
复制到tomcat的webapps目录后可以通过docker restart 重启容器