一、命令行启动
nginx:192.168.8.2
docker run --restart=always --privileged --network br0 --ip 192.168.8.2 -p 80:80 --name mynginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx:1.12.1
redis:192.168.8.9
docker run --restart=always --privileged --network br0 --ip 192.168.8.9 -p 7379:6379 --name myredis -v $PWD/data:/data -d redis:3.2.10 redis-server --appendonly yes
mysql:192.168.8.4
docker run --restart=always --privileged --network br0 --ip 192.168.8.4 -p 3306:3306 --name mymysql -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs:/logs -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=root@hiekn -d mysql:5.6.37
tomcat:192.168.8.3
docker run --restart=always --privileged --network br0 --ip 192.168.8.3 -p 8080:8080 --name mytomcat -v $PWD/project_logs:/work/tomcat/project_logs -v $PWD/logs:/work/tomcat/logs -v $PWD/webapps:/work/tomcat/webapps -d tomcat
mongo:192.168.8.6
docker run --restart=always --privileged --network br0 --ip 192.168.8.6 -p 27017:27017 --name mymongo -v $PWD/db:/data/db -d mongo:3.4.6
elasticsearch:192.168.8.7
docker run --restart=always --privileged --network br0 --ip 192.168.8.7 -p 9200:9200 -p 9300:9300 --name myes -v $PWD/data:/work/elasticsearch-5.5.1/data -v $PWD/config/elasticsearch.yml:/work/elasticsearch-5.5.1/config/elasticsearch.yml -v $PWD/logs:/work/elasticsearch-5.5.1/logs -d elasticsearch
registry:192.168.8.100
docker run --restart=always --privileged --network br0 --ip 192.168.8.100 -p 5000:5000 --name hiekn_registry -v /work/registry:/var/lib/registry -d registry
SSE:192.168.8.8
docker run --restart=always --privileged --network br0 --ip 192.168.8.8 -p 8081:8080 --name mysse -v $PWD/project_logs:/work/tomcat/project_logs -v $PWD/logs:/work/tomcat/logs -v $PWD/webapps:/work/tomcat/webapps -d tomcat
plantdata_nginx:192.168.8.10
docker run --restart=always --privileged --network br0 --ip 192.168.8.10 -p 81:80 --name plantdata_nginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx:1.12.1
plantdata_redis:192.168.8.5
docker run --restart=always --privileged --network br0 --ip 192.168.8.5 -p 6379:6379 --name plantdata_redis -v $PWD/data:/data -d redis:3.2.10 redis-server --appendonly yes
使用–privileged?真正root权限!
CentOS7中的安全模块selinux把权限禁掉了,临时关闭setenforce 0,永久关闭 修改/etc/sysconfig/selinux文件SELINUX=disabled
- Docker的base image做的很精简,甚至都没有init进程,原本在OS启动时执行生效系统变量的过程(sysctl -p)也给省略了,导致这些系统变量依旧保留着kernel默认值
- ocker容器中的系统变量在non-priviledged模式下目前(我使用的时docker 1.2.0版本)就无法修改,这 和resolv.conf、hosts等文件映射到宿主机对应的文件有不同。
二、使用docker-compose
- 从命令行启动,可以看出如果容器很多,会操作很多次,且自定义的网桥要事先自己定义好
- 使用编排服务,一键搞定
- 在compose文件所在目录,使用docker-compose up -d就可以启动所有服务,关闭则使用docker-compose down ,同时还删除掉自定义网桥
version: '2.1'
services:
nginx:
image: docker.io/nginx:1.12.1
container_name: mynginx
restart: always
networks:
app_net:
ipv4_address: 192.168.8.2
ports:
- "80:80"
volumes:
- /work/nginx/www:/www
- /work/nginx/logs:/wwwlogs
- /work/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
db:
image: docker.io/mysql:5.6.37
container_name: mymysql
restart: always
networks:
app_net:
ipv4_address: 192.168.8.4
environment:
MYSQL_ROOT_PASSWORD: root
ports:
- "3306:3306"
volumes:
- /work/mysql/data:/mysql_data
- /work/mysql/logs:/logs
- /work/mysql/conf/my.cnf:/etc/mysql/my.cnf
redis:
image: docker.io/redis:3.2.10
container_name: myredis
restart: always
command: ["redis-server" ,"--appendonly" ,"yes"]
networks:
app_net:
ipv4_address: 192.168.8.9
ports:
- "7379:6379"
volumes:
- /work/myredis/data:/data
mongo:
image: docker.io/mongo:3.4.6
container_name: mymongo
restart: always
networks:
app_net:
ipv4_address: 192.168.8.6
ports:
- "27017:27017"
volumes:
- /work/mongo/db:/data/db
nginx2:
image: docker.io/nginx:1.12.1
container_name: plantdata_nginx
restart: always
networks:
app_net:
ipv4_address: 192.168.8.10
ports:
- "81:80"
volumes:
- /work/plantdata_nginx/www:/www
- /work/plantdata_nginx/logs:/wwwlogs
- /work/plantdata_nginx/conf/nginx.conf:/etc/nginx/nginx.conf
es:
image: elasticsearch:5.5.1
container_name: myes
restart: always
mem_limit: 2G
networks:
app_net:
ipv4_address: 192.168.8.7
ports:
- "9200:9200"
- "9300:9300"
volumes:
- /work/elasticsearch/config/elasticsearch.yml:/work/elasticsearch-5.5.1/config/elasticsearch.yml
- /work/elasticsearch/data:/work/elasticsearch-5.5.1/data
- /work/elasticsearch/logs:/work/elasticsearch-5.5.1/logs
reids2:
image: docker.io/redis:3.2.10
container_name: plantdata_redis
restart: always
command: ["redis-server" ,"--appendonly" ,"yes"]
networks:
app_net:
ipv4_address: 192.168.8.5
ports:
- "6379:6379"
volumes:
- /work/myredis/data:/data
tomcat2:
image: tomcat:8.0.45
container_name: mysse
restart: always
networks:
app_net:
ipv4_address: 192.168.8.8
ports:
- "8081:8080"
depends_on:
- mongo
volumes:
- /work/sse/webapps:/work/tomcat/webapps
- /work/sse/project_logs:/work/tomcat/project_logs
- /work/sse/logs:/work/tomcat/logs
tomcat:
image: tomcat:8.0.45
container_name: mytomcat
restart: always
networks:
app_net:
ipv4_address: 192.168.8.3
ports:
- "8080:8080"
depends_on:
- db
- redis
volumes:
- /work/tomcat/webapps:/work/tomcat/webapps
- /work/tomcat/project_logs:/work/tomcat/project_logs
- /work/tomcat/logs:/work/tomcat/logs
hiekn_registry:
image: docker.io/registry
container_name: hiekn_registry
restart: always
networks:
app_net:
ipv4_address: 192.168.8.100
ports:
- "5000:5000"
volumes:
- /work/registry:/var/lib/registry
networks:
app_net:
driver: bridge
enable_ipv6: true
ipam:
driver: default
config:
- subnet: 192.168.8.0/24
gateway: 192.168.8.1
- subnet: 2001:3984:3989::/64
gateway: 2001:3984:3989::1