前提条件
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
首先使用命令查看centos内核版本:uname -r
如果内核大于等于3.10,可以安装,如果没有大于3.10则需要更新虚拟机
首先移除旧版本: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
其次就需要安装一些系统工具:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息:sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 缓存:sudo yum makecache fast
安装 Docker-ce:sudo yum -y install docker-ce
启动 Docker 后台服务:sudo systemctl start docker
测试运行 hello-world: docker run ubuntu:15.10 /bin/echo "Hello world"
到这里,docker已经安装完成。
在docker上搜索nginx:docker search nginx
拉去nginx源:docker pull nginx
查看nginx镜像:docker images nginx
使用nginx启动实例:docker run --name runoob-nginx-test -p 8081:80 -d nginx
这里会生成一串加密字符串,这个是该容器的id
注释:runoob-nginx-test 容器名称。-d设置容器在在后台一直运行。-p 端口进行映射,将本地 8081 端口映射到容器内部的 80 端口
命令行输入:curl 127.0.0.1:8081
或者在浏览器输入:ip地址:8081
创建目录 nginx, 用于存放后面的相关东西:mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf
部署命令: docker run -d -p 8082:80 --name runoob-nginx-test-web -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx nginx
命令说明:
-p 8082:80: 将容器的 80 端口映射到主机的 8082 端口。
–name runoob-nginx-test-web:将容器命名为 runoob-nginx-test-web。
-v ~/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。
-v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。
-v ~/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。
启动以上命令后进入 ~/nginx/www 目录: cd ~/nginx/www
创建 index.html 文件,内容如下:
菜鸟教程(runoob.com)
我的第一个标题
我的第一个段落。
首先还是拉去php:docker search php
接着,获取PHP源:docker pull php:7.3-fpm
(拉去php什么版本后面就跟上PHP的版本号就可以了)
查看PHP是否安装成功:docker images php
启动PHP :docker run --name myphp-fpm -v ~/nginx/www:/www -d php:7.3-fpm
命令说明:
–name myphp-fpm : 将容器命名为 myphp-fpm。
-v ~/nginx/www:/www : 将主机中项目的目录 www 挂载到容器的 /www
创建 ~/nginx/conf/conf.d 目录:mkdir ~/nginx/conf/conf.d
在该文件夹下创建runoob-test-php.conf文件:vim ~/nginx/conf/conf.d/runoob-test-php.conf
在里面编写以下代码:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
配置文件说明:
php:9000: 表示 php-fpm 服务的 URL,下面我们会具体说明。
/www/: 是 myphp-fpm 中 php 文件的存储路径,映射到本地的 ~/nginx/www 目录
启动 nginx:docker run --name runoob-php-nginx -p 8083:80 -d -v ~/nginx/www:/usr/share/nginx/html:ro -v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro --link myphp-fpm:php nginx
命令注释:
-p 8083:80: 端口映射,把 nginx 中的 80 映射到本地的 8083 端口。
~/nginx/www: 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。
~/nginx/conf/conf.d: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
–link myphp-fpm:php: 把 myphp-fpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。
接下来我们在 ~/nginx/www 目录下创建 index.php,代码如下:
创建目录:mkdir -p /Users/zhang/docker/nginx/conf.d && mkdir /Users/zhang/www && cd /Users/zhang/docker/nginx/conf.d && sudo touch default.conf
启动 php-fpm
解释执行 php 需要 php-fpm,先让它运行起来:docker run --name zhang-php -d -v /Users/zhang/www:/var/www/html:ro php:7.3-fpm
命令注释:
–name sui-php 是容器的名字。
/Users/zhang/www 是本地 php 文件的存储目录,/var/www/html 是容器内 php 文件的存储目录,ro 表示只读。
编辑 nginx 配置文件:vim /Users/zhang/docker/nginx/conf.d/default.conf
server {
listen 80;
server_name ceshizhang.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
}
php-fpm 启动命令
启动 nginx:docker run --name zhang-nginx -p 80:80 -d -v /Users/zhang/www:/usr/share/nginx/html:ro -v /Users/zhang/docker/nginx/conf.d:/etc/nginx/conf.d:ro --link zhang-php:php nginx
在window的host文件中加上 :域名 ceshizhang.com
在 /Users/zhang/www 下编辑:vim index.php
此时PHP已经安装完成;
如果需要安装PHP-redis:
1.进入php容器
docker exec -it myphp-fpm bash
注释:
myphp-fpm 为容器名称
2.如下操作挨个去执行:
curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/3.1.3.tar.gz
tar xfz /tmp/redis.tar.gz
rm -r /tmp/redis.tar.gz
mkdir -p /usr/src/php/ext
mv phpredis-3.1.3 /usr/src/php/ext/redis
docker-php-ext-install redis
接下来重启PHP容器 :docker restart myphp-fpm
同样,还是查找官方镜像:docker search mysql
下载mysql源:docker pul mysql:5.7
查看mysql 是否安装完成:docker images |grep mysql
运行容器:docker run -p 3306:3306 --name my-mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
到这里mysql 安装完成;
同样,还是查找官方镜像:docker search redis
下载redis源:docker pul redis:3.2
查看redis是否安装完成:docker images redis
运行容器:docker run -p 6379:6379 -v $PWD/data:/data -d redis:3.2 redis-server --appendonly yes
命令说明:
-p 6379:6379 : 将容器的6379端口映射到主机的6379端口
-v $PWD/data:/data : 将主机中当前目录下的data挂载到容器的/data
redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
连接查看容器:docker exec -it 43f7a65ec7f8 redis-cli
172.17.0.1:6379> info
#Server
redis_version:3.2.0
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:f449541256e7d446
redis_mode:standalone
os:Linux 4.2.0-16-generic x86_64
arch_bits:64
multiplexing_api:epoll
该文章通过 https://www.runoob.com/docker/docker-install-redis.html 总结出