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 ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58e68b16f8fa spring-boot-app “/app/entrypoint.sh” 6 minutes ago Up 25 seconds 0.0.0.0:8080->8080/tcp spring-boot-app
7089203db7c9 daocloud.io/library/mysql:5.7.15 “docker-entrypoint.sh” 4 hours ago Up 4 hours 3306/tcp mysql
7d101179012e daocloud.io/library/nginx:mainline “nginx -g ‘daemon off” 24 hours ago Up 4 hours 0.0.0.0:80->80/tcp, 443/tcp nginx

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

#

发布了59 篇原创文章 · 获赞 5 · 访问量 13万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览