ubuntu18.04使用docker-compose部署基础设施(nexus、docker私服、redis、mysql等等)

226 阅读4分钟

1. 修改为阿里源

  1. 备份原文件
mv /etc/apt/sources.list /etc/apt/sourses.list.backup
  1. 新建sources.list并添加阿里源内容
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
  1. 确认是否修改成功
sudo apt-get update

当出现下图时代表配置成功

2. 安装docker

  1. 卸载旧版本
sudo apt-get remove docker \
               docker-engine \
               docker.io
  1. 安装必要系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
  1. 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  1. 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
  1. 更新并安装Docker CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
  1. 启动Docker CE
sudo systemctl enable docker
sudo systemctl start docker
  1. 建立docker用户组 默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。
sudo groupadd docker
sudo usermod -aG docker $USER
  1. 测试是否正确安装
docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
Digest: sha256:1a523af650137b8accdaed439c17d684df61ee4d74feac151b5b337bd29e7eec
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

若能正常输出以上内容,则表示安装成功。
:由于国内网络问题,后续拉取Docker镜像会十分缓慢,建议配置国内镜像加速器
国内镜像加速器配置:

  • 注册阿里云账号account.aliyun.com/
  • 进入控制台搜索镜像容器服务
  • 点击镜像加速器就可以获取加速器地址
  • 拿到地址之后添加到docker服务配置
  sudo vi /etc/docker/daemon.json
  #添加下列格式地址到daemon.json,url即为你自己的阿里云加速地址
  {
		"registry-mirrors": ["url"]
  }
  • 添加完之后重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 检查加速器是否生效,执行以下命令,如果看到Registry Mirrors:,则说明配置成功。
docker info

3. 安装docker-compose

目前最新版本是1.27.4,可以去官网查看最新版本,以下连接和官网不同,官网连接下载比较慢

curl -L "https://get.daocloud.io/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

4. 安装基础设施

sudo mkdir /usr/local/docker

以下安装都在/usr/local/docker目录下进行

1. 安装nexus3

sudo mkdir nexus
cd nexus
  • 新建docker-compose.yml配置如下:
version: '3.1'
services:
  nexus:
    restart: always
    image: sonatype/nexus3
    container_name: nexus
    ports:
      - 8081:8081
    volumes:
      - ./data:/nexus-data
  • 启动nexus
docker-compose up -d

启动会比较久,可以查看日志tail -f data/log/nexus.log,如果出现下图则表示启动成功
: 启动时如果出现权限问题可以使用:chmod 777 /usr/local/docker/nexus/data 赋予数据卷目录可读可写的权限

  • 安装完之后登录控制台验证,地址:http://ip:port/ 用户名:admin 密码:密码查看data/admin.password
  • 添加阿里云代理仓库
  • 选择maven2(proxy)
  • 添加阿里云仓库地址http://maven.aliyun.com/nexus/content/groups/public/
  • 选择maven-public
  • 将阿里云仓库置顶

使用

  • 在mavensettings.xml中添加认证信息(server节点下),password输入自己设置的密码
<server>
  <id>nexus</id>
  <username>admin</username>
  <password>admin</password>
</server>
<server>
  <id>nexus-releases</id>
  <username>admin</username>
  <password>admin</password>
</server>

<server>
  <id>nexus-snapshots</id>
  <username>admin</username>
  <password>admin</password>
</server>

配置自动化部署,pom文件中添加以下内容

<distributionManagement>  
  <repository>  
    <id>nexus-releases</id>  
    <name>Nexus Release Repository</name>  
    <url>http://127.0.0.1:8081/repository/maven-releases/</url>  
  </repository>  
  <snapshotRepository>  
    <id>nexus-snapshots</id>  
    <name>Nexus Snapshot Repository</name>  
    <url>http://127.0.0.1:8081/repository/maven-snapshots/</url>  
  </snapshotRepository>  
</distributionManagement> 

部署到仓库

mvn deploy

配置代理仓库

<repositories>
    <repository>
        <id>nexus</id>
        <name>Nexus Repository</name>
        <url>http://127.0.0.1:8081/repository/maven-public/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>nexus</id>
        <name>Nexus Plugin Repository</name>
        <url>http://127.0.0.1:8081/repository/maven-public/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <releases>
            <enabled>true</enabled>
        </releases>
    </pluginRepository>
</pluginRepositories>

2. 安装registry和registry-ui

sudo mkdir registry
cd registry
  • 创建docker-compose.yml
version: '3.1'
services:
  registry:
    image: registry
    restart: always
    container_name: registry
    ports:
      - 5000:5000
    volumes:
      - ./data:/var/lib/registry
  frontend:
    image: konradkleine/docker-registry-frontend:v2
    ports:
      - 5001:80
    volumes:
      - ./certs/frontend.crt:/etc/apache2/server.crt:ro
      - ./certs/frontend.key:/etc/apache2/server.key:ro
    environment:
      - ENV_DOCKER_REGISTRY_HOST={docker registy ip}
      - ENV_DOCKER_REGISTRY_PORT={docker registy port}

注:
ENV_DOCKER_REGISTRY_HOST:安装的 Docker Registry 访问 IP
ENV_DOCKER_REGISTRY_PORT:安装的 Docker Registry 访问端口

  • 启动 docker compose
docker-compose up -d
  • 访问:http://{ip}:5000/v2/和http://{ip}:5001
  • 配置docker registry
sudo vi /etc/docker/daemon.json
  • 添加registry地址
{
  "registry-mirrors": ["{镜像加速器地址}"],
  "insecure-registries": ["{docker registry ip}:5000"]
}
  • 重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 检查是否生效
docker info 
  • 出现下图则说明已生效
  • 测试
# 1.从docker hub公网拉取镜像
docker pull tomcat
# 2.打标签
docker tag tomcat {docker registry ip}:5000/tomcat
# 3.推送镜像
docker push {docker registry ip}:5000/tomcat
  • 登录界面查看
  • 从私服拉取镜像
#先删除本地
docker image rm {docker registry ip}:5000/tomcat
#再重新拉取
docker pull {docker registry ip}:5000/tomcat

3. 安装mysql

sudo mkdir mysql
cd mysql
  • 创建docker-compose.yml
version: '3.1'
services:
  db:
    image: mysql
    restart: always
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456
    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
    ports:
      - 3306:3306
    volumes:
      - ./data:/var/lib/mysql
  • 启动 docker compose
docker-compose up -d

4. 安装redis

sudo mkdir redis
cd redis
  • 创建docker-compose.yml
version: '2'
services:
    redis:
      image: redis:5.0.0
      container_name: redis
      command: redis-server --requirepass 123456
      ports:
        - "6379:6379"
      volumes:
        - ./data:/data
  • 启动 docker compose
docker-compose up -d

推荐一款redis界面工具Another Redis Desktop Manager