centos7 amdx64
安装 Docker Engine-Community
使用 Docker 仓库进行安装
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。
设置仓库
安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
$ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
使用以下命令来设置稳定的仓库。
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker Engine-Community
安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:
$ sudo yum install docker-ce docker-ce-cli containerd.io
如果提示您接受 GPG 密钥,请选是。
启动 Docker
$ sudo systemctl start docker
设置 Docker自启动
查看自启动服务
$ systemctl list-unit-files | grep docker
grep [string] 为查找对应内容
设置docker服务自启动
$ systemctl enable docker.service
$ systemctl enable docker.socket
安装php
参考: https://www.runoob.com/docker/docker-install-php.html
- php推荐使用fpm版本
$ docker pull php:7.4-fpm
- 创建php容器
#-v 映射文件到宿主机 :前为宿主机文件目录; :后为容器文件目录; 这里把宿主机的网站根目录同时映射给nginx和php-fpm,便于管理 $ docker run --name php7.4-fpm --restart always -v /home/dockers/master-nginx/wwwroot:/var/www -p 8000:9000 -d php:7.4-fpm
安装nginx
参考: https://www.runoob.com/docker/docker-install-nginx.html
- 拉取 https://hub.docker.com/_/nginx?tab=tags
$ docker pull nginx
- 创建nginx容器
$ docker run -d --name master-nginx -p 80:80 -p 443:443 --restart always nginx
- 把nginx的配置文件映射到磁盘方便管理; 并且让php和nginx互相通信, mysql也是同理
#查看容器及容器id $ docker ps #复制nginx配置文件到实际磁盘中 $ docker cp 容器id:/etc/nginx/conf.d /home/dockers/master-nginx/conf.d $ docker cp 容器id:/etc/nginx/nginx.conf /home/dockers/master-nginx/nginx.conf #删除nginx容器 $ docker rm -f 容器id #创建wwwnet网络 $ docker network create wwwnet #创建nginx容器 #--name 容器名为master-nginx #-d 进程守护 #--restart always 保持自动启动 #-p 映射端口到宿主机 :前为宿主机端口; :后为容器端口 #-v 映射文件到宿主机 :前为宿主机文件目录; :后为容器文件目录; 这里把宿主机的网站根目录同时映射给nginx和php-fpm,便于管理 $ docker run -d --name master-nginx -p 80:80 -p 443:443 --restart always -v /home/dockers/master-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/dockers/master-nginx/conf.d:/etc/nginx/conf.d -v /home/dockers/master-nginx/wwwroot:/var/wwwroot nginx #wwwnet nginx容器添加到wwwnet网络 #--alias nginx 为容器添加网络范围的别名为nginx $ docker network connect --alias nginx wwwnet master-nginx #wwwnet php容器添加到wwwnet网络 #--alias php74 为容器添加网络范围的别名为php74 $ docker network connect --alias php74 wwwnet php7.4-fpm #拉取busybox镜像,该镜像有ping功能可以测试网络是否互通 $ docker pull busybox #创建busybox1容器 #--network wwwnet 容器添加到wwwnet网络 #--network-alias bx1 为容器添加网络范围的别名为bx1 $ docker run -itd --network wwwnet --network-alias bx1 --name busybox1 busybox $ docker attach busybox1 $ ping nginx #如果通信成功则说明没问题
安装Docker管理工具portainer
- 拉取 https://hub.docker.com/r/portainer/portainer
$ docker pull portainer/portainer
-
使用docker volume 进行储存
$ docker volume create portainer_data $ docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
-
使用磁盘空间 进行储存
$ mkdir /home/dockers $ mkdir /home/dockers/portainer_data $ docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /home/dockers/portainer_data:/data portainer/portainer
docker run 命令参数说明
--name 为容器命名为change-nginx -v 挂载文件,这里是把当前宿主机的目录 挂载到容器的项目目录上; 多个文件的话,就写多个-v参数 -p 端口 666:80 代表把宿主机的666端口映射到容器的80端口; 多个端口的话,就写多个-p参数 --link 代表把nginx容器和php-fpm容器 相关联 一般是 (--link php容器名:新命名)[此方法不推荐使用,直接用docker network桥接方式让容器间互通] -d 后台守护进程 --network NetworkName 容器添加到NetworkName网络 --network-alias aliaName 为容器添加网络范围的别名为aliaName(注意,docker的默认bridge网络是无法添加别名的)
docker php+nginx配置参考: https://blog.csdn.net/qq_35765928/article/details/87715448
docker 容器间通信配置参考: https://my.oschina.net/thinwonton/blog/2993309