是一个用于定义和运行多容器 Docker的插件工具,可以帮助我们可以轻松、高效的管理容器
下载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去控制容器需要写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文件路径下操作
docker-compose.yml
的三大部分:version
,services
,networks
,最关键是services
和networks
两个部分
version: '3'
services:nginx:image: mycentos:nginxnetwork_mode: "host"volumes:- /home:/usr/local/nginx/html- /var/logs/nginx/logs:/usr/local/nginx/logscommand: /usr/local/nginx/sbin/nginx -g "daemon off;"redis:image: mycentos:redisports:- "6380:6379"
后台启动容器:docker-compose up -d
在挂载目录下(/home
)建立index.html文件自定义内容,验证nginx:
/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
获取宿主机设置的值,验证成功
在/usr/local/docker-compose/test/wordpress
目录下创建docker-compose.yml:
version: '3.3'
services:db:image: mysql:5.7volumes:- db_data:/var/lib/mysqlrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: somewordpressMYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: wordpresswordpress:depends_on:- dbimage: wordpress:latestports:- "8000:80"restart: alwaysenvironment:WORDPRESS_DB_HOST: db:3306WORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: wordpressWORDPRESS_DB_NAME: wordpress
volumes:db_data: {}
docker-compose up -d
运行
这是搭建博客的docker-compose.yml文件
version: '3.3'
services:db: # 创建一个数据库容器的自定义容器名image: mysql:5.7 # 相当于docker run -itd mysql:5.7volumes: # 挂载- db_data:/var/lib/mysql # 之前的方式都是直接挂载到本地,这种方式是卷标的形式挂载(注意:- db_data是参数,可以变,自定义,必须与下面对应)restart: always # 总是自动重启,保证服务在线environment: # 配置环境MYSQL_ROOT_PASSWORD: somewordpressMYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: wordpresswordpress: # 创建一个博客容器的自定义容器名depends_on:- db # - db 是参数,与depends_on合起来的意思是只有当上面的mysql数据库安装成功后,这个wordpress才可以被安装;还有一个功能是docker --link将上面的mysql数据库,与这个wordpress应用连起来image: wordpress:latestports:- "8000:80"restart: alwaysenvironment:WORDPRESS_DB_HOST: db:3306WORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: wordpressWORDPRESS_DB_NAME: wordpress
volumes:db_data: {}
因为使用的卷标形式,但是不知道数据到底在本地的什么位置,需要通过卷标查看:
docker volume ls
docker volume inspect wordpress_db_data
可以看到具体挂载到了哪里: