Docker
优点:更高效的利用系统资源,同一个IP下的虚拟主机可以运行多个应用,比村通的虚拟机技术更高效; 更快的启动时间,docker无需启动完整的操作系统就可以启动应用服务,相比于虚拟机更快速 一致的运行环境,docker的镜像提供了除内核外完整的运行时环境 持续交付和部署,一次性创建和配置,可以结合持续集成系统完成集成测试,还可以结合持续部署系统完成自动部署
docker安装部署(linux)
检查docker是否已经安装(uname -r),如果安装了执行以下命令删除docker```linux sudo yum remove docker \
docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine
```
安装
yum install dockerddocker安装后
linux 启动 systemctl start docker 守护进程重启 sudo systemctl daemon-reload 重启docker服务 systemctl restart docker 重启docker服务 sudo service docker restart 关闭docker service docker stop 关闭docker systemctl stop docker 设置开机启动 systemctl enable docker.service设置docker镜像源```java “registry-mirrors”: [“https://pee6w651.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn“]
- 更改docker镜像源后需要执行的命令:```javasudo systemctl daemon-reloadsudo service docker restart
docker 简单的操作命令
- 将正在运行的docker容器内文件复制到物理机上:
docker cp 容器名:容器内文件路径 物理机路径 - docker info:查看运行状态及版本信息的命令
- docker pull:下载镜像的命令,从Docker Hub进行拉取
- docker save -o [将镜像打成tar包] [所打包的镜像]
eg: docker save -o /home/nginx.tar nginx:latest - docker load -i [将打包镜像tar包]
eg: docker load -i nginx.tar - docker tag [镜像ID] [修改后的镜像名称]
- docker exec -it [容器名] bash 进入容器中
- docker push [镜像名]
- docker inspect 容器ID 查看某容器下的配置信息
- docker logs -f 容器ID 查看容器运行的实时日志
- docker logs -f 容器ID | grep exception 过滤出容器下实时日志信息中的exception信息
- 启动容器:docker run -it -p 9000:8080 -p 9001:8085 -v /home/project:/soft —privileged —name myjava java
- 退出容器: ctrl+D
- 暂停运行的容器:docker pause [容器名称]
- 启动暂停的容器:docker unpause [容器名称]
- 重新启动容器:docker start -i [容器名称]
- 停止容器: docker stop [容器名称]
- 删除容器: docker rm [容器名称]
- docker创建内部网络:
- docker network create net1 docker 的默认网络是172.18.0.xxx
- docker network create —subnet=自定义网段
eg: docker network create —subnet=172.18.0.1/24 net1 - docker network inspect net1 docker查询net1网段的信息
- docker network rm net1 docker删除网段
Docker修改默认网段
删除原有配置
linux sudo service docker stop sudo ip link set dev docker0 down sudo brctl delbr docker0 sudo iptables -t nat -F POSTROUTING创建新的网桥
sudo brctl addbr docker0 sudo ip addr add 172.17.10.1/24 dev docker0 sudo ip link set dev docker0 up配置Docker的文件
vi /etc/docker/daemon.json [root@bogon ~]# cat /etc/docker/daemon.json ##追加的即可 {"registry-mirrors": ["http://224ac393.m.daocloud.io"], "bip": "172.17.10.1/24" } [root@bogon ~]# systemctl restart docker
Docker的使用
docker启动mysql
cur_dir=`pwd`docker run --name imooc-mysql -v ${cur_dir}/conf:/etc/mysql/conf.d -v ${cur_dir}/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest其中挂载的conf.d文件的个配置文件,其文件中是对数据库内存储数据的编码定义:[mysqld]character-set-server=utf8mb4[client]character-set-server=utf8mb4[mysql]character-set-server=utf8mb4docker run -d -p 3307:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456
使用docker搭建mysql集群
第一个mysql:docker run -d -p 3306:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUUP_PASSWORD=abc123456 --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc其他的:docker run -d -p 3307:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -e CLUSTER_NAME=PXC -e XTRABACKUUP_PASSWORD=abc123456 --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxcdocker run -d -p 3308:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -e CLUSTER_NAME=PXC -e XTRABACKUUP_PASSWORD=abc123456 --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxcdocker run -d -p 3309:3306 -v v4:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -e CLUSTER_NAME=PXC -e XTRABACKUUP_PASSWORD=abc123456 --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxcdocker run -d -p 3310:3306 -v v5:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 -e CLUSTER_NAME=PXC -e XTRABACKUUP_PASSWORD=abc123456 --privileged --name=node5 --net=net1 --ip 172.18.0.6 pxcdocker run -it -d -p 4001:8888 -p 4002:3306 -v /home/zzx/study:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.7 haproxy
docker启动nginx
使用docker方式启动nginx做负载均衡:需要挂载的文件有:创建文件夹 /opt/nginx/conf、/opt/nginx/conf/conf.d、/opt/nginx/conf/logs创建的文件:/opt/nginx/conf/nginx.conf:user nginx;worker_processes 1;error_log logs/error.log;error_log logs/error.log notice;error_log logs/error.log info;pid logs/nginx.pid;events {worker_connections 1024;}http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log logs/access.log main;sendfile on;#tcp_nopush on;tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;gzip on;gzip_min_length 100;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;include vhost/*.conf;# another virtual host using mix of IP-, name-, and port-based configuration##server {# listen 8000;# listen somename:8080;# server_name somename alias another.alias;# location / {# root html;# index index.html index.htm;# }#}# HTTPS server##server {# listen 443 ssl;# server_name localhost;# ssl_certificate cert.pem;# ssl_certificate_key cert.key;# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;# location / {# root html;# index index.html index.htm;# }#}#设置负载均衡的IP地址,默认的负载均衡规则:轮询upstream nacosserver{server 10.2.11.64:8848;server 10.2.11.66:8848;}include /etc/nginx/conf.d/*.conf;}/opt/nginx/mime.typestypes {text/html html htm shtml;text/css css;text/xml xml;image/gif gif;image/jpeg jpeg jpg;application/javascript js;application/atom+xml atom;application/rss+xml rss;text/mathml mml;text/plain txt;text/vnd.sun.j2me.app-descriptor jad;text/vnd.wap.wml wml;text/x-component htc;image/png png;image/svg+xml svg svgz;image/tiff tif tiff;image/vnd.wap.wbmp wbmp;image/webp webp;image/x-icon ico;image/x-jng jng;image/x-ms-bmp bmp;application/font-woff woff;application/java-archive jar war ear;application/json json;application/mac-binhex40 hqx;application/msword doc;application/pdf pdf;application/postscript ps eps ai;application/rtf rtf;application/vnd.apple.mpegurl m3u8;application/vnd.google-earth.kml+xml kml;application/vnd.google-earth.kmz kmz;application/vnd.ms-excel xls;application/vnd.ms-fontobject eot;application/vnd.ms-powerpoint ppt;application/vnd.oasis.opendocument.graphics odg;application/vnd.oasis.opendocument.presentation odp;application/vnd.oasis.opendocument.spreadsheet ods;application/vnd.oasis.opendocument.text odt;application/vnd.openxmlformats-officedocument.presentationml.presentationpptx;application/vnd.openxmlformats-officedocument.spreadsheetml.sheetxlsx;application/vnd.openxmlformats-officedocument.wordprocessingml.documentdocx;application/vnd.wap.wmlc wmlc;application/x-7z-compressed 7z;application/x-cocoa cco;application/x-java-archive-diff jardiff;application/x-java-jnlp-file jnlp;application/x-makeself run;application/x-perl pl pm;application/x-pilot prc pdb;application/x-rar-compressed rar;application/x-redhat-package-manager rpm;application/x-sea sea;application/x-shockwave-flash swf;application/x-stuffit sit;application/x-tcl tcl tk;application/x-x509-ca-cert der pem crt;application/x-xpinstall xpi;application/xhtml+xml xhtml;application/xspf+xml xspf;application/zip zip;application/octet-stream bin exe dll;application/octet-stream deb;application/octet-stream dmg;application/octet-stream iso img;application/octet-stream msi msp msm;audio/midi mid midi kar;audio/mpeg mp3;audio/ogg ogg;audio/x-m4a m4a;audio/x-realaudio ra;video/3gpp 3gpp 3gp;video/mp2t ts;video/mp4 mp4;video/mpeg mpeg mpg;video/quicktime mov;video/webm webm;video/x-flv flv;video/x-m4v m4v;video/x-mng mng;video/x-ms-asf asx asf;video/x-ms-wmv wmv;video/x-msvideo avi;}/opt/nginx/conf/conf.d/default.confserver {#使用docker启动nginx会设置映射服务器端口与镜像端口,若在配置稳在中配置会互相矛盾,导致#设置的负载均衡不成功#设置监听端口,listen 80;#在docker中的IP使用 局域网IP或者公网IP,不能使用localhost或127.0.0.1server_name 172.0.0.1;#charset koi8-r;#access_log /var/log/nginx/host.access.log main;location / {#proxy_set_header Host $host;#proxy_set_header X-Real-IP $remote_addr;#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_buffering off;#这里设置URLproxy_pass http://nacosserver/nacos/;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {# proxy_pass http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {# deny all;#}}启动nginx镜像:docker run -it -d -p 8840:80 -v /opt/nginx/conf:/etc/nginx --name nginx 10.3.0.171/library/nginx:1.15.7
