ubuntu 20.04 安装 docker 及WEB开发环境
详细安装步骤,见官网:
https://docs.docker.com/engine/install/ubuntu/
// 查看状态并配置开机启动
sudo systemctl start docker
sudo systemctl enable docker
// 添加docker的国内源
sudo vim /etc/docker/daemon.json
{ "registry-mirrors": [ "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ], "data-root": "/opt/docker", "bip": "172.17.0.1/16", "mtu": 1400 }
事实证明,配置:registry-mirrors 后没卵用,特别是指定版本的docker镜像拉取,还是走官方。。。
20220823更新为以下配置:
{ "data-root": "/opt/docker", "bip": "172.17.0.1/16", "mtu": 1400, "log-driver": "json-file", "log-opts": { "max-size": "128m", "max-file": "10", "compress": "true" } }
data-root:docker后期会占用大量硬盘,将其指向一个独立的大分区。
bip:固定docker0网卡的IP,方便后续docker内外应用的交互
max-size:128m,每个日志文件最大128MB
max-file:10,每个容器最多能有10个日志文件
(日志配置对已有docker容器无效,需要down再up才行)
sudo systemctl restart docker
// 当前用户加入docker组(以后执行docker命令不用加sudo)
sudo usermod -aG docker $USER
关闭当前shell,重新打开窗口生效。
// 重启
sudo systemctl restart docker
安装docker 显卡支持
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-apt
ubuntu先执行:Installing with Apt
再执行:Configuring Docker
docker里的显卡执行几下后报错解决
vim /etc/docker/daemon.json 添加:
"exec-opts": ["native.cgroupdriver=cgroupfs"]
重启docker服务:
sudo service docker restart
安装portainer
使用portainer相对方便些,portainer的docker-hub地址:
https://hub.docker.com/r/portainer/portainer-ce
具体的安装官方文档在此处:
https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux
docker volume create portainer_data docker run -d -p 8000:8000 -p 9443:9443 --name portainer \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latest
执行完以后就安装好了,WEB使用的是https 9443端口,8000是tcp隧道服务端口(没用过)
第一次登录后需要设置管理员用户名和密码,然后从后台写stack文件部署其它应用,相对比较些
安装PHP-FPM
nginx直接安装在宿主机
由于php不同应用会使用不同版本,所以使用docker部署更方便:
docker-hub地址:
https://hub.docker.com/r/bitnami/php-fpm
从Portainer后台新建stack(此处网络使用了general,为了减少服务器上的网卡数量,方便管理,第一次创建需要先在后台创建一个network,名称叫general即可),
创建一个名为:php-fpm-73的stack:(第一次创建的时候用#注释掉 - /opt/docker/data/php-fpm-73/etc:/opt/bitnami/php/etc 这一行,先生成配置文件,然后拷贝到宿主机再映射进去,直接映射进去没有配置文件)
version: '3.2' services: php-fpm-73: tty: true restart: always image: docker.io/bitnami/php-fpm:7.3.33 volumes: - /opt/web:/app #- /opt/docker/data/php-fpm-73/etc:/opt/bitnami/php/etc container_name: php-fpm-73 ports: - "9000:9000" networks: - 'general' networks: general: external: true
/opt/web为所有php web项目的部署路径。
创建好后,拷贝 /opt/bitnami/php/etc 下的所有文件到宿主机的 /opt/docker/data/php-fpm-73/etc 文件夹下:
cd /opt/docker/data/php-fpm-73 docker cp php-fpm-73:/opt/bitnami/php/etc .
去掉此行:- /opt/docker/data/php-fpm-73/etc:/opt/bitnami/php/etc 的注释
然后再update the stack
安装MySQL及phpmyadmin
mysql docker-hub地址:
https://hub.docker.com/_/mysql
phpmyadmin docker-hub地址:
https://hub.docker.com/_/phpmyadmin
从Portainer后台新建stack:mysql-57
version: '3.2' services: mysql-57: image: mysql:5.7.38 command: --default-authentication-plugin=mysql_native_password restart: always environment: MYSQL_ROOT_PASSWORD: your-root-password volumes: - /opt/docker/data/mysql/conf.d:/etc/mysql/conf.d - /opt/docker/data/mysql/data:/var/lib/mysql container_name: mysql-57 ports: - "3306:3306" networks: - 'general' phpmyadmin: image: phpmyadmin restart: always volumes: - /opt/docker/data/phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php ports: - "8888:80" environment: #- PMA_ARBITRARY=1 # 允许phpmyadmin连接到任意mysql服务,界面会出来host username passwd输入框
UPLOAD_LIMIT: 1024000000 networks: - 'general' networks: general: external: true
/etc/mysql/conf.d 是一个空文件夹,my.cnf默认会加载此文件夹下的所有文件,如果需要新增配置,写入此文件夹下即可。
创建文件 /opt/docker/data/phpmyadmin/config.user.inc.php 并写入内容:
config.user.inc.php在容器里默认是一个空文件
<?php $i++; $cfg['Servers'][$i]['auth_type'] = 'http'; $cfg['Servers'][$i]['host'] = '172.17.0.1';
我比较喜欢使用http验证方式,172.17.0.1为docker0 ip,因为之前已经固定,所以重启mysql、重新部署mysql都不会有影响。
安装nginx
为了方便,nginx直接安装在宿主机。
其它配置
docker-compose 配置时区
environment:
- TZ=Asia/Shanghai