Docker教程
安装
- 卸载旧的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 需要的安装包
yum install -y yum-utils
- 切换国内阿里云镜像
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装 Docker Engine-Community
yum install docker-ce docker-ce-cli containerd.io
- 启动docker
systemctl start docker
- 配置docker镜像加速器
常用命令
- docker version #显示docker的版本信息
- docker info # 显示docker的系统信息,包括镜像和容器数量
- docker list --help # 万能命令
- docker images #查看所有本地主机上的镜像
- docker search --name #搜索镜像
- docker pull 镜像名[:版本] #下载镜像 默认是最新版
- docker rmi -f 镜像id #删除镜像
- docker ps # 查看运行的容器
- docker exec -it 容器id /bin/bash # 进入容器
10.exit # 退出容器
部署LNMP
下载所需要的镜像(nginx1.2 mysql 8 php7.4 )版本自选
获取mysql镜像
docker pull mysql:8
启动mysql容器
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=guoguo --name mysql mysql:8
参数说明
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-e 设置环境变量,这里设置mysql的root用户的初始密码
-name 容器的名称、只要求唯一性
获取php 7.4镜像
docker pull php:7.4-fpm
启动php 容器
docker run -d -v /www/html:/var/www/html -p 9000:9000 --link mysql:mysql --name php-fpm php:7.4-fpm
参数说明
-d 让容器在后台运行
-p 添加主机到容器的端口映射
-v 添加目录映射,主机上的/www/html映射到容器里面 的/var/www/html,如果主机没有这个目录就创建这个目录,或者映射别的目录,但是后面路径要统一
-name 容器的名字
-link 容器与另外一个容器建立联系,这样就可以在当前的容器去使用另一个容器里的服务
测试目录映射
在主机/www/html 目录下创建php测试页面,会直接映射到容器里面
进入容器内部查看是否映射成功
docker ps 查看php容器id
dicker exec -it 容器id /bin/bash 进入容器
获取Nginx 1.21镜像
docker pull nginx:1.21
启动Nginx容器
docker run -d -p 80:80 --name cs_nginx -v /www/html:/var/www/html --link php-fpm:php-fpm --name nginx nginx:1.21
参数说明
-d 让容器运行在后台
-p 添加主机到容器的端口映射
-v 添加目录映射,这里最好nginx容器的根目录最好写成和php容器中根目录一样。但是不一定非要一样,如果不一样在配置nginx的时候需要注意
-name 容器的名称
-link 容器之间建立起来联系
修改Nginx 的配置文件,使他支持php ,方式有多种,这里我直接拷贝出配置文件修改在导进去即可
docker cp default.conf 容器id:/etc/nginx/conf.d/default.conf
修改文件
server {
listen 80;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
root /var/www/html; # 是容器中的路径 非宿主机路径
index index.html index.htm index.php;#这里加入添加php的方式
}
#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 1409927b52d9:9000;#这里可以用容器ID,也可以用容器IP,都具备唯一性 docker-compose构建的话用服务名称
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$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 cp default.conf 0383920e622b:/etc/nginx/conf.d/default.conf
进入到容器里面重新加载配置文件
参数说明
-t 在容器里面生产一个伪终端
-i 对容器内的标准输入(STDIN)进行交互
查看所有容器映射的端口
访问浏览器测试
接着打开浏览器,在地址栏输入 ip/index.php