0、环境说明

  • os:Ubuntu 20.04
  • docker:Docker version 19.03.13
  • docker-compose:docker-compose version 1.27.4
  • tomcat:9.0+
  • redis:6+
  • myql:8+

安装开始

1、安装 VMware Workstation Pro 15版本

2、安装 Ubuntu 20.04

3、配置用户

设置用户root
用安装引导的用户登录,然后:

$ sudo passwd root
---输入你想要设置的 root 密码

如果安装系统的时候安装了ssh服务 ,远程调用 ssh 就需要开启root的远程访问权限

$ vi /etc/ssh/sshd_config
-- 将注释掉的 #PermitRootLogin prohibit-password 这一行。改为  PermitRootLogin yes
$ systemctl restart ssh

4、安装 docker

官方文档 说的很详细(2020 年大家的文档都很好呀)简单的来看就是下面这样:

4.1 apt 安装

$ sudo apt-get update

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

4.2 添加 docker 软件源

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

ps:

4.2 安装 docker

$ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
  • ce 是社区版本,ee是 docker 公司的商用版本
  • containerd 是 docker 引擎的的底层,其实容器镜像的操作应该都是 containerd 管理的

4.3 配置镜像加速器

如果你的网络和我一样是国内运营商的话,还需要配置一下镜像加速器地址
我这里配置的是阿里云的加速器 : 登录阿里云 --> 进入控制台 --> 搜索“容器镜像服务”进入--> 找到“镜像加速器”菜单

$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

5、安装 docker-compose

官方文档 说的非常详细,简单一点就是下面这样:

5.1 github 安装

  • curl 安装
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • 给下载的 文件加执行权限
$ sudo chmod +x /usr/local/bin/docker-compose
  • 测试一下
$ docker-compose --version
$ docker-compose version 1.27.4, build 1110ad01

打工搞成

5.2 pip3 安装

docker-compose 是python 写的。。。。。 我们可以用 pip3 安装

  • 安装 python3-pip3
# Ubuntu 20.04 自己带着 python3,不过我们需要装一下pip3
$ apt install python3-pip
  • 安装 docker-compose
$ pip3 install docker-compose

ps:

  • docker 和 docker-compose 是有版本对应的。

6、安装 mysql、tomcat、redis、mongdb 、adminer、mongo-express

adminer 是 php 写的一个简易的数据库web客户端
mongo-express是一个MongoDB的Admin Web管理界面

6.1 创建reids 和 mysql 配置文件

6.1.1 mysql

$ cd ~ # 回到home目录
$ mkdir -p mysql/confi.d # 创建 文件夹
$ vim mysql/conf.d/my.cnf  # 创建mysql配置文件 文件内容如下
[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

6.1.2 reids

$ cd ~ # 回到home目录
$ mkdir -p redis/conf # 创建 文件夹
$ vim redis/conf/redis.conf  # 创建redis配置文件 文件内容如下  这里的redis 是123456
requirepass 123456

stop-writes-on-bgsave-error no
rdbcompression no
dbfilename dump.rdb

appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

dir /data/

6.2 创建docker-compose.yml 文件

$ cd ~ # 回到home目录
$ vi docker-compose.yml # 创建 配置文件 文件内容如下
version: '3.1'
services:
    mongo:
        container_name: mongo
        image: mongo
        volumes:
            - ./mongo/db:/data/db   # /data/db是container中存放数据位置
        ports:
            - 27017:27017
        restart: always

        
    mongo-express:
        container_name: mongo-express
        links:
            - mongo  # 这里关联到mongo的container
        image: mongo-express
        restart: always
        ports:
            - 8081:8081
        environment:
            ME_CONFIG_BASICAUTH_USERNAME: zhangshan
            ME_CONFIG_BASICAUTH_PASSWORD: 123456

    mysql:
        container_name: mysql
        image: mysql
        ports:
            - 33060:33060
            - 3306:3306
        command: 
            --default-authentication-plugin=mysql_native_password
            --character-set-server=utf8mb4
            --collation-server=utf8mb4_general_ci
            --explicit_defaults_for_timestamp=true
            --lower_case_table_names=1
        restart: always
        volumes:
            - ./mysql/db:/var/lib/mysql
            - ./mysql/conf.d:/etc/mysql/conf.d
        environment:
            MYSQL_ROOT_PASSWORD: 123456
            
    adminer:
        image: adminer
        restart: always
        ports:
            - 8082:8080
        

    redis:
        container_name: redis
        image: redis
        restart: always
        command: redis-server /usr/local/etc/redis/redis.conf
        ports:
            - 6379:6379
        volumes:
            - ./redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
            - ./redis/db/:/data/
    tomcat: 
        restart: always
        image: tomcat
        container_name: tomcat
        ports: 
          - 8080:8080
        # 在docker中,右边一般都是容器内,左边都是指宿主机
        volumes: 
          - ./tomcat/webapps:/usr/local/tomcat/webapps
        environment:
          TZ: Asia/Shanghai

7、启动起来

$ cd ~
$ docker-compose up -d

8、验证
在主机浏览器中输入
http://Ubuntu IP 地址:8080/http://Ubuntu IP 地址:8081/ 用户名 zhangshan 密码 123456
http://Ubuntu IP 地址:8082/

tomat访问的时候应该是 404 是因为这样的

$ docker exec -it tomcat /bin/bash  # 进入到 名字是 tomcat 的docer 容器中,并且是以/bin/bash 命令进入的
$ ls

有2个文件  webapps  和 webapps.dist  我们熟知的tomcat 首页是空的

$ exit #  从容器中退出

$ cd  ~/tomcat/webapps 
$ mkdir ROOT # 创建熟悉的目录
$ vim ROOT/index.html  # 在文件中 写入 “hello docker”

在访问 http://Ubuntu IP 地址:8080/ 就会看到效果了