案例一
提前安装好docker-compose
使用 mysql:5.6 镜像和 WordPress:latest镜像,在/root/wordpress目录下创建docker-compose.yaml文件,编排部署WordPress,并设置restart策略
[root@localhost ~]# mkdir wordpress
[root@localhost ~]# cd wordpress/
[root@localhost wordpress]# vi docker-compose.yaml
注意每一行的缩进
mysql:
image: mysql:5.6
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: 123456
wordpress:
image: wordpress:latest
restart: always
ports:
- "80:80"
links:
- "mysql:mysql"
environment:
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: 123456
启动测试
[root@localhost wordpress]# docker-compose up -d
Creating wordpress_mysql_1 ... done
Creating wordpress_wordpress_1 ... done
查看启动是否成功
[root@localhost wordpress]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f521eb4ab925 wordpress:latest "docker-entrypoint..." 22 seconds ago Up 20 seconds 0.0.0.0:80->80/tcp wordpress_wordpress_1
1ab669a6cb05 mysql:5.6 "docker-entrypoint..." 26 seconds ago Up 22 seconds 0.0.0.0:3306->3306/tcp wordpress_mysql_1
浏览器登录访问
案例二
使用 mysql:5.6 镜像和 owncloud :latest镜像,在/root/owncloud目录下创建docker-compose.yaml文件,编排部署owncloud,并设置restart策略
[root@localhost ~]# mkdir owncloud
[root@localhost ~]# cd owncloud/
[root@localhost owncloud]# vi docker-compose.yaml
mysql:
image: mysql:5.6
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: owncloud
MYSQL_USER: owncloud
MYSQL_PASSWORD: 123456
owncloud:
image: owncloud:latest
restart: always
ports:
- "80:80"
links:
- "mysql:mysql"
environment:
WONCLOUD_DB_NAME: owncloud
WONCLOUD_DB_USER: owncloud
WONCLOUD_DB_PASSWORD: 123456
启动测试
[root@localhost owncloud]# docker-compose up -d
Creating owncloud_mysql_1 ... done
Creating owncloud_owncloud_1 ... done
查看启动状态
[root@localhost owncloud]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5877ec11c807 owncloud:latest "docker-entrypoint..." 29 seconds ago Up 27 seconds 0.0.0.0:80->80/tcp owncloud_owncloud_1
db8a0d1e7645 mysql:5.6 "docker-entrypoint..." 30 seconds ago Up 29 seconds 0.0.0.0:3306->3306/tcp owncloud_mysql_1
浏览器访问测试
补充
容器之间数据卷的应用
容器和主机之间映射共享卷
[root@localhost ~]# mkdir html //创建映射的目录
[root@localhost ~]# echo "this is nginx server " >> html/index.html //给目录写入一个内容
[root@localhost ~]# docker run -itd --name nginx -p 80:80 -v /root/html/:/usr/share/nginx/html nginx:latest
启动Nginx镜像 然后映射我们创建的目录
[root@localhost ~]# docker ps //查看运行的状态
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
22fc5e94c3ff nginx:latest "nginx -g 'daemon ..." 27 seconds ago Up 26 seconds 0.0.0.0:80->80/tcp nginx
浏览器访问测试
多个容器之间使用容器共享卷
容器共享卷的创建
[root@localhost ~]# docker rm -f $(docker ps -qa) //删除所有的容器
创建共享卷的容器(相当于共享文件)
[root@localhost ~]# docker run -itd --name web1 -p 81:80 -v /usr/share/nginx/html nginx:latest
[root@localhost ~]# docker exec -it web1 /bin/bash //进入容器
root@21e4f76b398f:/# echo "this is web1" >> /usr/share/nginx/html/index.html //写入网页文件
其他容器共享该共享卷
使用 --volumes-from 连接到创建共享卷的容器上
[root@localhost ~]# docker run -itd --volumes-from web1 --name web2 -p 82:80 nginx:latest
[root@localhost ~]# docker run -itd --volumes-from web1 --name web3 -p 83:80 nginx:latest
浏览器分别访问测试
web1
web2
web3