Docker多容器部署

docker的大名相信大家已经耳熟能详, 这个已经风靡了2年+的神器,今天我们也来把玩下.
这里必须贴下docker的标志性logo,虽然有过几次变迁,但集装箱没变,这艘鲸鱼般的大船也没变,装(build)-载(ship)-运(run)的核心必须没变。

这里必须澄清下这艘只装载集装箱的大船,其实排水量并不大,这里的意思是要表明它比vm优越的多的地方:是它占用资源小或者说性能开销小,资源利用率高(这些已经有很多测评了),启动速度快(1s+)。

好了,不说废话了,直接来干货。这里的集装箱就是容器container,docker能装载各种容器,只要你能做成模板塞进集装箱里(我们称之为镜像image)。

这里我只且把玩几条命令来衬托docker的强大:

需求:部署运行mysql的spring-boot-app应用,并用nginx代理。

  1. 部署mysql 并创建数据库:

    docker pull daocloud.io/library/mysql:5.7.15 (拉取并获得镜像)
    docker run -d --name mysql -v /home/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -daocloud.io/library/mysql:5.7.15(启动容器并使用外置数据文件)
    docker exec -it mysql /bin/sh (进入到容器内并开启命令行)
    />mysql -uroot -p (连接mysql)
    />create databases spring-boot-test;
    />exit

  2. 部署spring-boot-app (这里我已经把部署包打包并制作成镜像了):

    docker pull jawfneo/spring-boot-docker
    docker run -d --name spring-boot-app -p 8080:8080 --link=mysql:db-container spring-boot-app (link链接mysql容器以以db-contianer的别名获得ip地址访问,在app里面有配置mysql的db引用)

  3. 部署配置nginx (这里配置有些多,当然也可以放入到镜像文件制作成可重用镜像):

    docker pull daocloud.io/library/nginx:mainline
    docker run -d --name nginx -p 80:80 -v /home/application/nginx/nginx.conf:/etc/nginx/nginx.conf --link=spring-boot-app:app-container daocloud.io/library/nginx:mainline (启动容器并使用外置配置)
    docker cp nginx:/etc/nginx/nginx.conf ./nginx.conf (从容器内拷贝配置文件到宿主机器外)
    修改外置nginx.conf:
    注释掉include /etc/nginx/conf.d/*.conf;
    增加下面内容
    server {
    listen 80;
    server_name localhost;
    location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
    proxy_pass http://app-container:8080;
    }
    }
    重启容器
    docker restart nginx

docker ps 查看下状态

CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
58e68b16f8faspring-boot-app“/app/entrypoint.sh”6 minutes agoUp 25 seconds0.0.0.0:8080->8080/tcpspring-boot-app
7089203db7c9daocloud.io/library/mysql:5.7.15“docker-entrypoint.sh”4 hours agoUp 4 hours 3306/tcpmysql
7d101179012edaocloud.io/library/nginx:mainline“nginx -g ‘daemon off”24 hours agoUp 4 hours0.0.0.0:80->80/tcp, 443/tcpnginx

剩下的就是以80端口去访问我们的app了:)

#

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页