ubuntu 20.04 安装 docker 及WEB开发环境

安装docker

详细安装步骤,见官网:

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

 

 
 
posted @ 2022-05-05 10:37  河在谈  阅读(23)  评论(0编辑  收藏  举报