尝试在阿里云上玩转docker
最近开始学习Docker,目的很简单,解决万恶的开发环境配置问题。
准备工作:手头上有1台阿里云ECS服务器,CentOS7操作系统;
在阿里云上安装docker
step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Step 3: 更新并安装 Docker-CE
1 | sudo yum makecache fast |
Step 4: 开启Docker服务
sudo service docker start
Step 5: 安装校验
docker version
Step 6: 修改daemon配置文件/etc/docker/daemon.json来使用加速器
1 | sudo mkdir -p /etc/docker |
搭建LNMP开发环境
Centos下安装docker以及启动失败原因
1. 安装docker
1 | yum install docker |
2.查看docker状态
1 | systemctl status docker.service |
- 如果linux的内核中的SELinux不支持 overlay2 graph driver ,
- 解决方法有两个,要么启动一个新内核,要么就在docker里禁用selinux,–selinux-enabled=false
3.编辑docker配置文件
1 | vi /etc/sysconfig/docker |
4.解决docker启动nginx报错Error response from daemon: oci runtime error: container_linux.go:235: starting container process 这个问题的原因是: Linux和docker版本兼容问题
1 | 1、查看你当前的内核版本 |
5. docker 容器启动成功但是无法访问
- 解决办法:忙猜应该是防火墙的原因。
1
2
3
4
5
6
7
8
9
10
11
12
13
14vi /etc/sysctl.conf
或者
vi /usr/lib/sysctl.d/00-system.conf
# 添加如下代码:
net.ipv4.ip_forward=1
# 重启network服务
systemctl restart network
# 查看是否修改成功
sysctl net.ipv4.ip_forward
# 如果返回为“net.ipv4.ip_forward = 1”则表示成功了
docker安装php7.2
1 | # 下载镜像 |
参数说明:
- –name php72 : 设置容器名称。
- -v /root/lnmp/www:/var/www/html: 将主机中项目的目录 www 挂载到容器中的目录
安装PHP扩展
1 | # 进入PHP容器 |
举个🌰🌰
PHP容器默认是没有redis扩展的。所以我们通过docker-php-ext-install安装redis扩展
1 | # 下载扩展包 |
docker安装nginx
1 | docker pull 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 php72:php: 把 php 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm
docker安装mysql
1 | docker pull mysql:5.6 |
参数说明
–link php72:php
将此容器与php通过网络连接起来,这样在nginx容器里就可以访问到php容器里提供的服务。–link yb-nginx:nginx
将此容器与nginx容器通过网络连接起来,在nginx容器以后即可以通过主机名访问到mysql容器进行连接数据库操作。-e MYSQL_ROOT_PASSWORD=qweasd
设置mysql的root用户密码为qweasd-p 3306:3306
进入容器操作mysql
1 | # 进入容器 |
注意:
- 主机中执行docker exec -it <容器名 or id> /bin/bash进入容器的命令行。
php容器里安装mysql扩展
1 | #进入php容器 |
安装成功,退出docker,重启docker
1 | docker restart php |
注意:项目内部连接MySQL用的host是容器内部IP
1 | docker inspect 容器id |
将文件拷贝到容器
- docker cp 要拷贝的文件路径 容器名(或者 容器id):要拷贝到容器里面对应的路径
示例:假设容器名为php72,现在要将宿主机/www/index.php文件拷贝到容器里面的/data/www路径下面,那么命令该怎么写呢?
答案:在宿主机上面执行如下命令
1 | docker cp /www/index.php php72:/data/www/ |
Docker单独部署一个服务
Fastadmin框架部署举例
1 | # 启动容器 |
docker 常用命令
帮助类命令
1 | docker version |
原文作者: ybphp
原文链接: https://www.ybphp.com/2020/09/03/尝试在阿里云上玩转docker/
版权声明: 转载请注明出处(必须保留原文作者署名原文链接)