如何安装

下载镜像需要在dockerHub中进行搜索,搜索出需要安装的镜像后可以通过其项目提供的Readme进行安装与使用。一般情况下的步骤

  1. 确定版本
  2. 拉取

安装MySQL

以5.7.33版本为例

  1. 拉取镜像

    docker pull mysql:5.7.33
  2. 启动镜像

    mysql服务内置了环境变量,需要在启动时进行指定。

    /root/mysql映射到容器的数据库文件,从而保证数据的安全。

    • MYSQL_ROOT_PASSWORD

      root用户的密码

    docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d -v /root/mysql:/var/lib/mysql  mysql:5.7.33

    上面命令会启动MySQL服务并设置root密码为root,监听端口为3306,并将docker容器内的数据文件与本机/root/mysql进行关联。

  3. 其他命令

    • 进入MySQL服务

      docker exec -it 容器名称|容器id bash
    • 外部查看MySQL日志

      docker logs 容器名称|容器id
    • 将MySQL数据库备份为sql文件

      # 导出全部数据
      docker exec mysql|容器id sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql 
      
      # 导出指定库数据
      docker exec mysql sh -c 'exec mysqldump --databases 库表 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql
      
      # 导出指定库数据不要数据
      docker exec mysql sh -c 'exec mysqldump --no-data --databases 库表 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql
    • 执行sql文件到MySQL中

      docker exec -i mysql sh -c 'exec mysql -uroot - p"$MYSQL_ROOT_PASSWORD"' < /root/xxx.sql

安装MongoDB数据库

  1. 拉取镜像(最新)

    docker pull mongo
  2. 运行镜像

    docker run -d -p 27017:27017 -v /root/mongo/data:/data/db --name mymongo mongo
  3. 手动配置用户名密码

    # 进入容器
    docker exec -it mymongo /bin/bash
    mongo
    
    # 选择 admin库
    use admin
    
    # 运行命令
    db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]}) 

安装redis服务

  1. 下载镜像(最版版本)

    docker pull redis
  2. 启动容器并挂载到本地,开启持久化存储

    docker run --name redis -v /root/redis/data:/data -p 6379:6379 -d redis redis-server --appendonly yes
  3. 自定义配置文件

    /root/redis目录下新建redis.conf文件(酌情新建即可),然后写入如下内容。(推荐下载使用对应版本的配置文件)

    #  开启远程权限
    bind 0.0.0.0

    最后加载配置启动并开启持久化数据

    docker run --name redis -v /root/redis/data:/data -v /root/redis/config:/usr/local/etc/redis/redis.conf -p 6379:6379 -d redis redis-server /usr/local/etc/redis/redis.conf  --appendonly yes

安装tomcat

  1. 下载tomcat镜像(最新版本)

    docker pull tomcat
  2. 运行tomcat镜像

    docker run -p 8080:8080 -d --name mytomcat tomcat
  3. 进入tomcat镜像

    docker exec -it mytomcat /bin/bash
  4. 将webapps目录挂载在外部

    docker run -p 8080:8080 -v /root/webapps:/usr/local/tomcat/webapps -d --name mytomcat tomcat

安装Nginx

  1. 下载镜像(最新)

    docker pull nginx
  2. 启动Nginx容器

    nginx配置文件目录:/etc/nginx/conf.d

    html静态文件目录:/usr/share/nginx/html

    docker run -p 80:80 --name nginx01 -d -v /root/nginx/conf.d:/etc/nginx/conf.d -v /root/nginx/html:/usr/share/nginx/html  nginx

    启动时会将镜像内文件与宿主机进行关联,因此如果宿主机没有配置文件或html文件时会导致nginx也会丢失默认配置和html页面

    默认配置

    server {
      listen       80;
      listen  [::]:80;
      server_name  localhost;
    
      #charset koi8-r;
      #access_log  /var/log/nginx/host.access.log  main;
    
      location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
      }
    
      #error_page  404              /404.html;
    
      # redirect server error pages to the static page /50x.html
      #
      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
        root   /usr/share/nginx/html;
      }
    
      # proxy the PHP scripts to Apache listening on 127.0.0.1:80
      #
      #location ~ \.php$ {
      #    proxy_pass   http://127.0.0.1;
      #}
    
      # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
      #
      #location ~ \.php$ {
      #    root           html;
      #    fastcgi_pass   127.0.0.1:9000;
      #    fastcgi_index  index.php;
      #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
      #    include        fastcgi_params;
      #}
    
      # deny access to .htaccess files, if Apache's document root
      # concurs with nginx's one
      #
      #location ~ /\.ht {
      #    deny  all;
      #}
    }
  3. 进入容器

    docker exec -it nginx01 /bin/bash

反向代理宿主机服务

  1. 在安装Docker的时候,会在宿主机安装一个虚拟网关 docker0,查询docker0的IP地址

    ip addr show docker0
  2. 配置docker上安装的nginx

    server {
            listen 80;
            server_name xiaokang.me;
            location / {
                # 设置最大允许上传单个的文件大小
                client_max_body_size 100m;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                # 反向代理到 tomcat
                proxy_pass http://172.17.0.1:3002;
            }
        }
  3. 重新启动nginx容器

    docker restart nginx