文章目录
什么是docker-compose?
是一个用于定义和运行多容器 Docker的插件工具,可以帮助我们可以轻松、高效的管理容器
安装docker-compose工具
下载docker-compose地址:https://github.com/docker/compose/releases
传输到/usr/local/bin/
目录下,并改名mv docker-compose-linux-x86_64 docker-compose
:
设置权限chmod 777 docker-compose
并验证是否安装成功./docker-compose -v
:
配置环境变量vi ~/.bash_profile
并使其生效source ~/.bash_profile
:
PATH=$PATH:/usr/local/bin/
验证是否安装成功./docker-compose -v
:
Docker-Compose的快速上手
注意:使用Docker-Compose去控制容器需要写yml文件,compose操作容器一定要进入配置文件目录
编写一个最最简单的yml:
version: '3' # 冒号后面一定要有空格
services:
redis:
image: mycentos:redis
后台启动容器:docker-compose up -d
查看容器运行情况:docker-compose ps
docker-compose exec的使用(进入容器):docker-compose exec redis bash
停止并删除容器:docker-compose down
停止并删除容器并删除volume:docker-compose down --volumes
停止启动容器:docker-compose stop;docker-compose start
注意:操作docker-compose一定要在配置文件docker-compose.yml文件路径下操作
Compose核心技能
docker-compose.yml
的三大部分:version
,services
,networks
,最关键是services
和networks
两个部分
- compose设置网络模式
- compose使用端口映射
- compose设置文件共享
- compose管理多个容器
- docker-compose.yml
version: '3'
services:
nginx:
image: mycentos:nginx
network_mode: "host"
volumes:
- /home:/usr/local/nginx/html
- /var/logs/nginx/logs:/usr/local/nginx/logs
command: /usr/local/nginx/sbin/nginx -g "daemon off;"
redis:
image: mycentos:redis
ports:
- "6380:6379"
后台启动容器:docker-compose up -d
验证nginx
在挂载目录下(/home
)建立index.html文件自定义内容,验证nginx:
验证redis
/usr/local/redis/bin/redis-cli -p 6380
进入宿主机redis客户端,set name zyten
docker-compose exec redis bash
进入容器,/usr/local/redis/bin/redis-cli
进入redis客户端,get name
获取宿主机设置的值,验证成功
Docker-Compose搭建个人博客
快速上手
在/usr/local/docker-compose/test/wordpress
目录下创建docker-compose.yml:
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
docker-compose up -d
运行
docker-compose.yml分析
这是搭建博客的docker-compose.yml文件
version: '3.3'
services:
db: # 创建一个数据库容器的自定义容器名
image: mysql:5.7 # 相当于docker run -itd mysql:5.7
volumes: # 挂载
- db_data:/var/lib/mysql # 之前的方式都是直接挂载到本地,这种方式是卷标的形式挂载(注意:- db_data是参数,可以变,自定义,必须与下面对应)
restart: always # 总是自动重启,保证服务在线
environment: # 配置环境
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress: # 创建一个博客容器的自定义容器名
depends_on:
- db # - db 是参数,与depends_on合起来的意思是只有当上面的mysql数据库安装成功后,这个wordpress才可以被安装;还有一个功能是docker --link将上面的mysql数据库,与这个wordpress应用连起来
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
因为使用的卷标形式,但是不知道数据到底在本地的什么位置,需要通过卷标查看:
docker volume ls
docker volume inspect wordpress_db_data
可以看到具体挂载到了哪里: