docker 学习1

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

$ 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

$ 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

原文地址:https://www.cnblogs.com/hcpzhe/p/12088687.html