针对docker-compose简单使用和dockercompose使用详解这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展DockerCompose的简单使用、25.dockercompo
针对docker-compose 简单使用和docker compose使用详解这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展 Docker Compose 的简单使用、25.docker compose 简介 和 docker-compose.yml 参数介绍、7.docker 学习笔记之入门,docker compose 简单配置、centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker等相关知识,希望可以帮助到你。
本文目录一览:- docker-compose 简单使用(docker compose使用详解)
- Docker Compose 的简单使用
- 25.docker compose 简介 和 docker-compose.yml 参数介绍
- 7.docker 学习笔记之入门,docker compose 简单配置
- centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker
docker-compose 简单使用(docker compose使用详解)
docker-compose.yaml:
nginx:
image: nginx
links:
- tomcat
ports:
- "80:80"
volumes:
- /root/conf:/etc/nginx/conf.d:ro
tomcat:
image: tomcat:8.5
links:
- mysql
volumes:
- /root/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml
- /root/manager.xml:/usr/local/tomcat/conf/Catalina/localhost/manager.xml
mysql:
image: mysql
volumes:
- /opt/data:/var/lib/mysql
- /root/codepad.sql:/docker-entrypoint-initdb.d/codepad.sql
environment:
- MYSQL_ROOT_PASSWORD=xxxxxx
注意 tomcat 的 manager 默认只有本机能访问,如果需要非本机访问的,需要配置 manager.xml, 不然访问 tomcat 控制台会报 403, 位置在:$CATALINA_BASE/conf/[enginename]/[hostname]
, 内容如下:
<Context privileged="true">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow=".*"/>
</Context>
启动 docker container:
docker-compose up -d
java 代码中连接数据库,字符串写法为:
url=jdbc:mysql://${MYSQL_PORT_3306_TCP_ADDR}:3306/codepad?useUnicode=true&characterEncoding=UTF-8
MYSQL_PORT_3306_TCP_ADDR 是 mysql container 的 ip 地址,intellij idea 本地运行时得在 run/debug 窗口事先配置好.
参考文档见:
tomcat manager 配置
docker-compose 文档
mysql docker container
nginx docker container
tomcat docker container
Docker Compose 的简单使用
Docker Compose 的简单介绍
Docker compose 是一个用于定义和运行多容器 docker 应用的编排方式,可以使用它来管理应用服务。使用一条简单的命令,你就可以创建和启动你配置中的所有服务。compose 的配置文件是 docker-compose.yml,Docker-compose 是 Docker compose 的运行工具,在 Docker 1.13 以前,Docker 的编排都使用 Docker-compose 工具,而在 Docker 1.13 以后,将 Docker-compose 的功能集成到 Docker stack 中,直接可以通过 Docker stack 部署分布式应用。
Docker compose 的文件格式如下:
version: ''2'' //版本号
services: //下面包含两个服务,分别是web和redis
web:
build: . //使用Dockerfile创建镜像,指定是Dockerfile文件所在目录
ports:
- "5000:5000" //映射端口
volumes:
- .:/code //将宿主机当前目录挂载到容器/code目录中
- logvolume01:/var/log //将数据卷挂载到容器中
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
version 是版本号
services 是应用服务,下面包含两个服务,分别是 web 和 redis
web 服务下:
build 使用 Dockerfile 创建镜像,Dockerfile 文件目录为当前目录
ports 端口映射,容器的 5000 端口映射宿主机的 5000 端口
volumes 挂载,第一个是将当前目录挂载到容器的 /code 目录,第二个则是将数据卷 logvolume01 挂载到容器的 /var/log 目录
links 链接
redis 服务下:
image 使用 redis 镜像
volumes 是数据卷
2.Docker compose 的安装
官方下载脚本(不推荐)
curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Daocloud 脚本
curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
下载完文件后对文件添加可执行权限
chmod +x /usr/local/bin/docker-compose
检查 compose 是否安装成功
[root@localhost ~]# docker-compose --help
Define and run multi-container applications with Docker.
Usage:
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
docker-compose -h|--help
Options:
-f, --file FILE Specify an alternate compose file (default: docker-compose.yml)
-p, --project-name NAME Specify an alternate project name (default: directory name)
--verbose Show more output
-v, --version Print version and exit
-H, --host HOST Daemon socket to connect to
--tls Use TLS; implied by --tlsverify
--tlscacert CA_PATH Trust certs signed only by this CA
--tlscert CLIENT_CERT_PATH Path to TLS certificate file
--tlskey TLS_KEY_PATH Path to TLS key file
--tlsverify Use TLS and verify the remote
--skip-hostname-check Don''t check the daemon''s hostname against the name specified
in the client certificate (for example if your docker host
is an IP address)
--project-directory PATH Specify an alternate working directory
(default: the path of the compose file)
Commands:
build Build or rebuild services
bundle Generate a Docker bundle from the Compose file
config Validate and view the compose file
create Create services
down Stop and remove containers, networks, images, and volumes
events Receive real time events from containers
exec Execute a command in a running container
help Get help on a command
images List images
kill Kill containers
logs View output from containers
pause Pause services
port Print the public port for a port binding
ps List containers
pull Pull service images
push Push service images
restart Restart services
rm Remove stopped containers
run Run a one-off command
scale Set number of containers for a service
start Start services
stop Stop services
top Display the running processes
unpause Unpause services
up Create and start containers
version Show the Docker-Compose version information
3.docker compose 的简单使用
docker compose 的命令就不进行解析了,需要了解的可以通过
docker-compose --help
或者查询具体命令用法
docker-compose up --help
就可以得到帮助
下面举一个简单的 docker compose 的小例子
version: ''2''
services:
elasticsearch:
image: elasticsearch
ports:
- "9200:9200"
- "9300:9300"
environment:
ES_JAVA_OPTS: "-Xmx256m -Xms256m"
kibana:
image: kibana
environment:
ELASTICSEARCH_URL: http://elasticsearch:9200/
ports:
- "5601:5601"
links:
- elasticsearch
docker-compose.yml 文件有严格的格式校验,编写的时候尽量不要使用 tab 键,不要添加注释等
下面解释一下这个 compose 文件。这是一个单机 ELK 日志收集模块的编排工具,定义了 EK 服务模块,作为日志的存储和显示。
version: ''2'' #docker-compose 的版本号目前有 v1,v2,v3 版本,其中 v3 版本需要 docker1.13 (and higher) 版本支持
services:
elasticsearch:
image: elasticsearch #使用elasticsearch:latest镜像
ports:
- "9200:9200" #将elasticsearch服务的端口映射到宿主机上
- "9300:9300"
environment:
ES_JAVA_OPTS: "-Xmx256m -Xms256m" #设置elasticsearch服务的java虚拟机内存使用
kibana:
image: kibana #使用kibana:latest镜像
environment:
ELASTICSEARCH_URL: http://elasticsearch:9200/ #指定查询日志信息的elasticsearch的路径
ports:
- "5601:5601"
links:
- elasticsearch #连接elasticsearch,kibana容器可以使用docker内部dns将elasticsearch转为对应容器ip
切换目录到 docker-compose.yml 文件所在文件夹
启动服务
[lt_docker_user1@localhost log]$ docker-compose up -d
WARNING: The Docker Engine you''re using is running in swarm mode.
Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.
To deploy your application across the swarm, use `docker stack deploy`.
Creating log_elasticsearch_1
Creating log_kibana_1
停止服务
[lt_docker_user1@localhost log]$ docker-compose stop
Stopping log_kibana_1 ... done
Stopping log_elasticsearch_1 ... done
删除服务
[lt_docker_user1@localhost log]$ docker-compose rm
Going to remove log_kibana_1, log_elasticsearch_1
Are you sure? [yN] y
Removing log_kibana_1 ... done
Removing log_elasticsearch_1 ... done
其他的命令就不在介绍,自行探索 https://docs.docker.com/compose/reference/overview/
docker-compose 插件功能在 docker 1.13 版本中集成到 docker stack 命令中,支持分布式部署。
docker-compose 文件的编写格式和参数可以参考官方文档:
v2 版本:https://docs.docker.com/compose/compose-file/compose-file-v2/
v3 版本:https://docs.docker.com/compose/compose-file/
25.docker compose 简介 和 docker-compose.yml 参数介绍
1. docker compose概念 文档 https://docs.docker.com/compose/compose-file/compose-versioning
一个基于 docker 的工具
可以通过一个 yml 文件定义多容器的 docker 应用
通过一条命令就可以根据 yml 文件的定义 去创建或者管理这多个容器
2 docker compose 版本 2 与 版本 3 的区别
最大的区别
version 2 只能用于单机
version 3 可用于多机
3. docker-compose.yml
Services
一个 service 代表一个 container , 这个 container 可以从 dockerhub 的 image 来创建, 或者从本地的 Dockerfile build出来的image 来创建
service 的启动 类似与 docker run , 我们可以给其指定 network 和 volume . 所以可以给 service 指定 network 和 volume 的引用
eg :
docker run -d --name db -v db-data:/var/liv/postgresql/data --network back-tier postgres:9.4
services:
db: #service 的名称为 db
image: postgres:9.4 #service image 为 postgres:9.4 这是从远程拉取的
volumes:
- "db-data:/var/liv/postgresql/data" #将外部db-data挂载到container 的 /var/liv/postgresql/data 内
networks:
- back-tier #网络为 back-tier
eg2:
docker run -d --link db --link redis --network back-tier worker
services:
worker:
build: ./worker
links:
- db
- redis
networks:
- back-tier #在同一个网络上 不需要links
Volumes:
上面 的
volumes:
- "db-data:/var/liv/postgresql/data" #将外部db-data挂载到container 的 /var/liv/postgresql/data 内
会有单独的一个 volumes (与 services 同级别) 对db-data 进行 阐述
类似于 docker volume create db-data
eg:
volumes:
db-data:
Nerworks:
上面 的
networks:
- back-tier #在同一个网络上 不需要links
会有单独的一个 networks (与 services 同级别) 对back-tier 进行 阐述
类似于 docker nerwork create -d bridge back-tier
networks:
front-tier:
driver: bridge
back-tier:
driver: bridge
4编写 docker-compose.yml
# docker compose api 版本
version: ''3''
services:
# 定义了 两个 service 分别是 名字分别是 wordpress 和 mysql
wordpress:
#image 为 word press
image: wordpress
#本地 8888 端口 映射 容器 80 端口
ports:
- 8888:80
#wordpress 连接数据库 的 host 为 mysql , passwword 为 root 类似于 -e
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD: root
#指定连接 的网络 为 my-bridge
networks:
- my-bridge
mysql:
image: mysql:5.7.27
# 数据库 root 的 连接密码 和 所使用的数据库名称
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
# 外部 mysql-data 挂载到 容器内的 /var/lib/mysql
volumes:
- mysql-data:/var/lib/mysql
#指定连接 的网络 为 my-bridge
networks:
- my-bridge
# 定义 volumes
volumes:
mysql-data:
# 定义 networks
networks:
my-bridge:
driver: bridge
7.docker 学习笔记之入门,docker compose 简单配置
version: "3.6" #设置网络环境 networks: #自定义网络 nginx-network: ipam: driver: bridge config: - subnet: "172.16.238.0/24" #引用外部预先定义好的网段 redis-network: external: name: redis-network services: nginx: image: nginx container_name: nginx-compose environment: #设置环境变量 password: "123456" ports: - "8003:80" networks: redis-network: ipv4_address: 192.168.1.5 volumes: - "/usr/docker/compose/nginx/conf:/conf" command: ["/usr/local/nginx/sbin/nginx","-c","/conf/nginx.conf","-g","daemon off;"] privileged: true #特殊权限 working_dir: /conf #工作目录 stdin_open: true #打开标准输入 tty: true #模拟伪终端 nginx1: build: context: ./nginx dockerfile: Dockerfile args: buildno: 1 container_name: nginx-compose2 ports: - "8002:80" networks: redis-network: ipv4_address: 192.168.1.6 volumes: - "/usr/docker/compose/nginx/conf:/conf" command: ["/usr/local/nginx/sbin/nginx","-c","/conf/nginx.conf","-g","daemon off;"]
docker-compose up -d #最简单的执行命令,如果没报错的话 docker images;docker ps -a 就会有对应的镜像和容器
docker-compose -p testname1 up -d #给上命名
centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker
1. 先决条件 centos7+docker 最新版本
sudo yum updat
2. 配置一下镜像源,创建 /etc/docker/daemon.conf 文件,在其中输入如下内容
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
3. 启动 docker 命令:
systemctl start docker
重启 docker 服务:
service docker restart
4. 查看和下载 Crawlab 的镜像命令 :
docker search crawlab #(查找Crawlab镜像)
docker pull tikazyq/crawlab:latest #(下载Crawlab镜像)
5. 创建 docker 组:
sudo groupadd docker (删除docker这个用户:userdel -r docker)
6.centos7 查看所有用户:
cut -d : -f 1 /etc/group
7. 将您的用户添加到该 docker 用户组,命令:
sudo usermod -aG docker 用户名
8. 查看 “docker” 组下的所有用户,命令:
grep ''docker'' /etc/group
9.Docker Compose 安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
稍等片刻,有点慢!!!!
赋权:
sudo chmod +x /usr/local/bin/docker-compose
查看版本:
docker-compose --version
10. 查找 docker-compose.yml 文件位置:
find / -name "docker-compose.yml*"
(会出现 find: ‘/run/user/1000/gvfs’: 权限不够,执行:umount /run/user/1000/gvfs 和 rm -rf /run/user/1000/gvfs, 再执行就不会出错了!!!
11. 图中:
/var/lib/docker/overlay2/50df4de9bf340501cade27650953ad983948b10e13bbe931710ef090ab1a4602/diff/app/docker-compose.yml-----------是我的路径
cd 到 app 目录就可以了
vim docker-compose.yml #编辑
注意: 新版镜像的 CRAWLAB_API_ADDRESS 是这样的: CRAWLAB_API_ADDRESS: "http://192.168.157.128:8000"
12. 启动 Crawlab
cd 进入到 docker-compose.yml 所在文件目录下
才能运行:docker-compose up
集群启动容器,否则找不到文件
查看 woker 容器日志命令:docker-compose logs worker
正常会启动四个容器:master、woker、redis、mongo
第一次次启动会下载安装并配置节点和数据库(redis 和 mongodb)
13.Crawlab
浏览器访问 :http://ip:8080 用户名密码是 admin/admin
第一次访问没问题,但是第二次启动会报各种错,博主正在研究中 ----- 持续更新中!!!
关于docker-compose 简单使用和docker compose使用详解的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于 Docker Compose 的简单使用、25.docker compose 简介 和 docker-compose.yml 参数介绍、7.docker 学习笔记之入门,docker compose 简单配置、centos7+docker 安装和部署 crawlab 分布式爬虫平台,并使用 docker-compose 管理 docker等相关内容,可以在本站寻找。
本文标签: