什么是docker?

Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。

官网传送门,你要能打开算我输 docker.com

下载安装docker

yum install -y epel-release // 下载
yum install docker-io   	// 安装docker
chkconfig docker on     	// 加入开机启动
systemctl enable docker.service  //不知为何上面那个无效,亲测这个可用
service docker start    	// 启动docker服务

安装docker的tomcat容器

使用docker search tomcat来搜索tomcat镜像,并下载最高starts的那个docker pull docker.io/tomcat

启动tomcat

docker run -p 8081:8080 docker.io/tomcat 

这里8081是外网访问端口,8080是容器内部端口,意思是将8081映射到8080.
访问127.0.0.1:8081即可访问已启动的tomcat

部署web应用

  • 查看正在运行的容器
docker ps

  • 将自己的war包上传到tomcat
docker cp demo.war 4cf23164cc4d :/usr/local/tomcat/webapps

上面的ID是CONTAINER_ID,前面使用的docker ds可以看到容器的id

  • 重启tomcat
docker restart -p 8081:8080 docker.io/tomcat
  • 查看tomcat容器中的项目
docker exec -it 4cf23164cc4d /bin/bash
cd /webapps
ls

挂载启动

以上的方式有个弊端:容器重启后项目就没了,所以下面我们使用挂在的方式启动容器

docker run -d -v /usr/docker_file/demo.war:/usr/local/tomcat/wabapps/demo.war -p 8081:8080 docker.io/tomcat

自定义镜像启动

以上两种方式一般作为测试使用,一般生产环境上会已打包镜像的方式启动

  • 编辑dockfile文件

vi Dockfile

from docker.io/tomcat:latest    #你的 tomcat的镜像
MAINTAINER xxx@qq.com    		#作者
COPY demo.war   /usr/local/tomcat/webapps  #放置到tomcat的webapps目录下
  • 生成新的镜像
docker build -t demo:v1
  • 启动镜像
docker run -p 8081:8080 demo:v1

常用命令

作用命令说明
启动docker服务service docker start
查看信息docker info
查看镜像docker images
pull镜像docker pull xxxxx
查看容器docker ps
运行容器docker run xxxxdocker run -p 8081:8080 --name 自定义名称 -it 镜像名称 /bin/bash
后台运行容器docker run -d -p 6379:6379 docker.io/redis
停止容器运行docker stop CONTAINERIDCONTAINERID为要停止的容器的ID
删除容器docker rm CONTAINERID
删除镜像docker rmi IMAGEIDIMAGEID为要删除的镜像ID
启动容器docker start CONTAINERID
使容器开机自启docker update --restart=always CONTAINERID