首先在阿里雲購買了一台服務器 選擇了華南-深圳地區 操作系統選用了 CentOS8.0 64位

1. 初始化賬號密碼 登陸xshell,開始裝Docker
一、安裝docker
1、Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。
通過 uname -r 命令查看你當前的內核版本
$ uname -r
2、使用 root 權限登錄 Centos。確保 yum 包更新到最新。
$ sudo yum update
3、卸載舊版本(如果安裝過舊版本的話)
$ sudo yum remove docker docker-common docker-selinux docker-engine
4、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、設置yum源
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6、可以查看所有倉庫中所有docker版本,並選擇特定版本安裝
$ yum list docker-ce --showduplicates | sort -r

7、安裝docker
$ sudo yum install docker-ce #由於repo中默認只開啟stable倉庫,故這里安裝的是最新穩定版17.12.0 $ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
安裝過程報錯了:

分析原因
看上面的內容,說的是containerd.io >= 1.2.2-3 ,意思就是 containerd.io 的版本必須大於等於 1.2.2-3
解決方案
1、要么就降低docker 的版本
2、如果不想降低docker 版本,那么就更新 containerd.io 的版本
$ wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
$ yum install -y containerd.io-1.2.6-3.3.el7.x86_64.rpm
然后回到第7步驟 輸入


8、啟動並加入開機啟動
$ sudo systemctl start docker $ sudo systemctl enable docker
9、驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)
$ docker version

10、查看docker列表
$ sudo systemctl docker images

以上安裝docker 內容完畢,接下來通過運行環境.
-------------------------------------------------------------------------
docker安裝nginx
docker search nginx

2.拉取官方的鏡像
docker pull nginx

3.創建並運行容器,綁定映射端口
docker run --name nginx -p 80:80 -d nginx
--name 這里是別名,使用docker ps 會最后顯示names
-p 80:80 第一個80是服務器的端口,第二個80是docker容器端口,
-d 要運行的容器名稱 這里是nginx

上面運行報錯了,這里是以前裝了nginx,通過docker ps -a 查看

現在進行清除命令:
docker rm `docker ps -a -q`
現在運行第三步 ,會成功。
docker run --name nginx -p 80:80 -d nginx
通過netstat -nltp 可以查看到80 端口已經啟動。

此刻訪問IP,nginx 正常運行起來

docker安裝php
1.查找Docker Hub上的php鏡像
docker search php

2.拉取官方的鏡像,標簽為 phpdockerio/php72-fpm
docker pull phpdockerio/php72-fpm

3.現在需要查看nginx 默認運行的路徑 先進入nginx 容器 再找到/etc/nginx/conf.d/default.conf 查看默認訪問路徑
docker exec -it nginx bash cat /etc/nginx/conf.d/default.conf -n

4.創建並運行php容器
docker run -p 9000:9000 --name phpfpm -v /var/www/html:/usr/share/nginx/html -d phpdockerio/php72-fpm

5.進入php 容器,找到路徑
/usr/share/nginx/html
創建一個文件 index2.php 文件
docker exec -it phpfpm bash cd /usr/share/nginx/html/ vim index2.php

現在 vim 是沒有安裝,需要運行
apt-get update apt-get install vim cat << EOF > /root/.vimrc :set encoding=utf-8 :set fileencodings=ucs-bom,utf-8,cp936 :set fileencoding=gb2312 :set termencoding=utf-8 EOF

保存退出!然后進入服務器 /var/www/html 發現生成了index2.php,其實這個就相當與映射docker 路徑到服務器路徑了

6.現在就是要nginx 配置訪問php 文件了,如果直接訪問就會是404

6.1 獲取到phpfpm 這個容器的ip
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' phpfpm

最后這個內網ip是:172.17.0.3,這個ip 會配置到/etc/nginx/conf.d/default.conf
6.2 配置nginx 支持php 文件訪問
docker exec -it phpfpm bash cd /etc/nginx/conf.d/ apt-get update apt-get install vim vim default.conf
在代碼里面加入 9000 端口這段代碼
server {
listen 80;
listen [::]:80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#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
# 加入以下的代碼 可以訪問php文件
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 172.17.0.3:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#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;
#}
}
6.3 重啟nginx ,即可訪問index2.php
docker restart nginx

docker安裝mysql
1.查找鏡像:
docker search mysql
也可以去官網查看鏡像tag,選擇自己需要的版本,否則會下載最新版本:https://hub.docker.com/_/mysql/
2.下載鏡像(如上一步,可以指定想要的版本,不指定則為最新版):
docker pull mysql
3.通過鏡像創建容器並運行:
docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
-
-p 3306:3306:將容器的 3306 端口映射到主機的 3306 端口。
-
-v -v $PWD/conf:/etc/mysql/conf.d:將主機當前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。
-
-v $PWD/logs:/logs:將主機當前目錄下的 logs 目錄掛載到容器的 /logs。
-
-v $PWD/data:/var/lib/mysql :將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。
-
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼。
此時,用navicat for mysql連接mysql發現報錯:Client does not support authentication protocol requested by server。。。

解決方案:
進入容器:
docker exec -it 62349aa31687 /bin/bash
進入mysql:
mysql -uroot -p
授權:
mysql> GRANT ALL ON *.* TO 'root'@'%';
刷新權限:
mysql> flush privileges;
更新加密規則:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
更新root用戶密碼:
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
刷新權限:
mysql> flush privileges;

以上是MySQL安裝的全過程,目前的環境搭建已經全部完成了。

