docker3
1、使用dockerfile构建wordpress讲解
重点:每次的RUN都会产生一个新的容器,因此在构建dockerfile的时候一定要注意,一些命令要怎么写:例如数据库登录问题
[root@docker01 wordpress]# cat dockerfile
FROM centos:7
RUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
RUN yum install nginx mariadb-server php-fpm php-mysql -y
RUN mysql_install_db --user=mysql --defaults-file=/etc/my.cnf
RUN tmp=`nohup mysqld_safe --defaults-file=/etc/my.cnf &` && sleep 5 && \
mysql -e "create database wordpress;" && \
mysql -e "grant all on wordpress.* to wordpress@localhost identified by '123456';"
ADD www.conf /etc/php-fpm.d/
www.conf
ADD nginx.conf /etc/nginx/nginx.conf
RUN mkdir /code
WORKDIR /code/
ADD wordpress-4.9.4-zh_CN.zip .
RUN yum install unzip -y
RUN unzip wordpress-4.9.4-zh_CN.zip
RUN mv wordpress/* .
RUN chown -R nginx:nginx .
ADD init.sh /
init.sh
CMD ["/bin/bash","/init.sh"]
2、docker的分层镜像

docker镜像是有层次的,最底层是系统内核、也就是宿主机内核,比如centos、debian等操作系统为基础构建的,这个层是只读的。在这个层上面是可写层,比如我们在原镜像开启的容器上安装nginx,在制作成nginx镜像,nginx就是在可写层,也就是第二层。举一反三再安装ssh,就是第三层。他们之间是由依附关系的,比如nginx和ssh都要依附centos层,但是nginx依附centos,而ssh依附nginx再依附centos。
例子:

如果先导入wordpress,就是两层,再导入centos7,就只是导入了个id,因为wordpress需要复用centos7 centos7不用复用
如果先带入centos,就是一层,再导入wordpress,也是一层。因为centos本身就是一层,wordpres附用centos,本身镜像里面就有centos,所以centos那层就不用再走了,直接走配置那层了。
例子2:

(1)产生数据变化就是一层,图片中有11层,为什么这个这么多层呢?因为这个是dockerfile生成的所以run一下有变化就会产生层
(2)上面两层的原因是手动做镜像
3、dockerfile的优化
a: 使用体积小的linux镜像alpine
b:尽可能的清理无用的缓存文件(尽可能把多个RUN合并)

使用alpine,节省优化内存空间,传输快,一个轻量级的系统。
使用alpine这个系统去做镜像,alpine这个操作系统是因为docker火起来的,我们用centos系统为基础做了一个nginx镜像大小是将近600Mb,但是alpine制作出来的nginx的镜像才几兆。
dockerfile优化 docker镜像的每一层都是只保留变化的内容,变化的内容包括文件的属主和属组的变化


两个相同内容镜像优化后的对比


4、dockerfile的优化2
c:修改dockerfile的时候,尽可能把修改的内容放在最后
d:使用.dockerignore忽略构建docker镜像时,不需要的文件







5、容器之间的互联 容器之间的通讯
之前我们都是把整套服务构建成一个镜像,比如wordpress,里面有nginx+php+centos7+mysql,但是以后要是使用容器去做架构,mysql其实是可以单出来的。
容器和容器之间互联的问题就是互相不了解对方的IP地址,但是网络的是通的




例子:容器互联搭建zabbxi
(1)上传镜像并docker load(清理一波容器)
(2)
docker run --name mysql-server -it \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-d mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin
docker run --name zabbix-java-gateway -t \
-d zabbix/zabbix-java-gateway:latest
docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--link mysql-server:mysql \
--link zabbix-java-gateway:zabbix-java-gateway \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:latest
docker run --name zabbix-web-nginx-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--link mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-p 80:80 \
-d zabbix/zabbix-web-nginx-mysql:latest
6、docker-compose讲解和安装使用 (容器编排,批量管理工具)
yum install docker-compose -y(需要epel源) 利用这个工具可以让容器批量启动
docker-compose有三个版本v1 v2 v3 不同版本配置语法不同


stop只会停容器不会删容器 restart 服务名字
version
services
mysql-server
image
restart
environment
MYSQL_ROOT_PASSWORD
MYSQL_DATABASE
MYSQL_USER
MYSQL_PASSWORD
command
zabbix-java-gateway
image
restart
zabbix-server
depends_on
image
restart
environment
DB_SERVER_HOST
MYSQL_DATABASE
MYSQL_USER
MYSQL_PASSWORD
MYSQL_ROOT_PASSWORD
ZBX_JAVAGATEWAY
ports
zabbix-web-nginx-mysql
depends_on
image
ports
restart
environment
DB_SERVER_HOST
MYSQL_DATABASE
MYSQL_USER
MYSQL_PASSWORD
MYSQL_ROOT_PASSWORD

7、游戏公司的人事架构

8、游戏服务端的架构

9、实战练习
服务端:内存4G+
安装docker,docker-compose,启动服务
yum install docker-ce docker-compose -y
tar xf fuck.tar.gz -C /usr/local/games/
cd /usr/local/games/fuck/
systemctl start docker
./start
netstat -lntup
修改游戏服务器列表信息中的ip地址
vi /usr/local/games/fuck/www/tianlong3D/conf/serverlist/serverlist.txt
客户端:
安装win-jdk 1.8
打开ApkIDE最新3.3.3少月增强版
反编译apk包
修改assets\config.properties文件8,13,14行
修改res\values\strings.xml文件9,10,17,18服务器地址
重新编译
充值元宝
http://IP:81/zt/gm.php
gmcode默认123456
(1)新建一台桥接的虚拟机,安装doclek docker-compose
(2)
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum install docker-ce -y
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install docker-compose -y
systemctl enable docker
systemctl start docker












修改文件 根据文档指示




