运维开发网

使用docker搭建gitlab服务器

运维开发网 https://www.qedev.com 2020-07-11 10:50 出处:网络 作者:运维开发网整理
简单记录Docker的使用和GitLab的搭建 Docker基础篇 没有sudo权限 安装docker 基础命令 docker安装mysql和配置 Dockerfile常用命令 制作镜像 发布镜像 容器网络 Docker Compose Swarm模式 集群 正式搭建GitLab 系统环境 安装gitlab 配置gitlab.rb文件 cpu跑满解决方案 Docker基础篇 没有sudo权限 su

简单记录Docker的使用和GitLab的搭建

Docker基础篇

没有sudo权限

安装docker

基础命令

docker安装mysql和配置

Dockerfile常用命令

制作镜像

发布镜像

容器网络

Docker Compose

Swarm模式 集群

正式搭建GitLab

系统环境

安装gitlab

配置gitlab.rb文件

cpu跑满解决方案

Docker基础篇

没有sudo权限

  • su -
  • chmod u+w /etc/sudoers
  • vi /etc/sudoers
  • zrk ALL=(ALL) ALL
  • chmod u-w /etc/sudoers

安装docker

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/Linux/centos/docker-ce.repo
    sudo yum-config-manager --enable docker-ce-edge
    sudo yum makecache fast
    sudo yum install docker-ce
    sudo service docker start
    systemctl enable docker

基础命令

  • 查看版本:docker --version

  • 拉取需要的镜像:docker pull 名称(如:redis)

  • 查看本地所有镜像:docker images

  • 查询所有的容器:docker ps -a

  • 停止容器:docker stop 容器名称

  • 删除顺序,先删除容器后删除镜像
    • docker rm 容器ID
    • docker rmi 镜像ID
  • 运行一个容器:docker run [参数] 镜像名称
    • 端口映射:-p 本机端口:容器端口
    • 分离模式(在后台运行):-d
    • 名称:--name
  • 在运行的容器中执行命令:docker exec [参数] 容器名称 命令
    • 分离模式:-d
    • 展示容器输入信息STDIN:-i
    • 命令行交互模式:-t

docker安装mysql和配置

  • sudo mkdir data/mysql/logs data/mysql/conf data/mysql/data -p

  • sudo docker pull mysql/mysql-server:5.7

  • docker run -d -p 3306:3306 --name mysql01 mysql/mysql-server

  • docker exec -it 容器名称 bash

  • 带参数安装mysql
sudo docker run 
    --name mysql-server5.7 
    --restart always 
    -d -p 3306:3306 
    -v /home/zrk/data/mysql/data:/var/lib/mysql 
    -v /home/zrk/data/mysql/conf/my.cnf:/etc/mysql/my.cnf
    -v /home/zrk/data/mysql/logs:/logs 
    -e MYSQL_ROOT_PASSWORD=root123456 
    -e MYSQL_USER=zrk 
    -e MYSQL_PASSWORD=zrk123456
    mysql/mysql-server:5.7 
    --character-set-server=utf8 
    --collation-server=utf8_general_ci
  • 修改my.cnf
[client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    [mysqld]
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
  • mysql修改用户权限
grant all privileges on *.* to 'zrk'@'%' identified by '密码' with grant option;
    flush privileges;

Dockerfile常用命令

  • FROM 基于另一个镜像进行创建,或者重新创建

  • MAINTAINER 镜像维护人

  • RUN 运行命令

  • COPY 复制

  • ENTRYPOINT 定义容器入口

  • CMD 设置容器运行的默认命令和参数

  • WORKDIR 容器运行的目录

  • EXPOSE 暴露端口

  • ENV 设置环境变量

  • VOLUME 控制如何在宿主中进行存储

制作镜像

  • 使用Vs Code的Docker插件
    • Ctrl+Shift+P
    • ADD Docker Files to Workspace
    • ASP.Net Core(选择应用平台)
    • Linux(选择Linux容器)
    • 5000(程序监听端口)
  • 修改Dockerfile文件
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
    WORKDIR /app

    # Copy csproj and restore as distinct layers
    COPY *.csproj ./
    RUN dotnet restore

    # Copy everything else and build
    COPY . ./
    RUN dotnet publish -c Release -o out

    # Build runtime image
    FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
    WORKDIR /app
    COPY --from=build-env /app/out .
    ENTRYPOINT ["dotnet", "DockerDemo.dll"]
  • docker build -t 制作镜像的名称 .

  • docker run -d -p 8080:5000 --name 容器名称 -v ${PWD}:/app 镜像名称

制作镜像

  • docker login 登录

  • docker push 用户名/镜像名称
    • 如果镜像和用户名不一致,需要修改镜像名称:docker tag 旧名称 用户名/镜像名称
  • 访问网址,可看到发布的镜像:[https://hub.docker.com/]

容器网络

  • Legacy Linking:使用容器名称进行连接,创建桥连接网络,容器间可以通信
    • docker run -d -p 8080:5000 --link 容器名称 镜像名称
  • 把容器添加到桥连接网络:可以创建自定义桥连接网络,网络内的容器才能互相通信
    • 创建网络:docker network create --drive bridge 网络名称
    • 加入网络:docker run -d --network=网络名称 --name 网络内的容器名称 镜像名称
    • 查询网络:docker network ls
    • 检查网络:docker network inspectr
    • 连接网络:docker network connect 网络名称 容器名称
    • 删除网络:docker network rm 网络名称
    • 断开连接:docker network disconnect 网络名称 容器名称

Docker Compose

  • 安装
    • sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    • sudo chmod +x /usr/local/bin/docker-compose
  • docker-compose build 把docker-compose.yml文件中的所有服务构建成镜像

  • docker-compose up 启动

  • docker-compose down 停止、删除,由up命令建立的所有东西

  • docker-compose logs

  • docker-compose ps

  • docker-compose start

  • docker-compose stop

  • docker-compose rm

  • docker-compose.yml例子
version: '3'

    services:
        服务名称:
            build:
                context: .
                dockerfile: Dockerfile
            ports:
                - '8080:5000'
            networks:
                - 网络名称
            depens_on:
                - '服务名称'
        
        服务名称:
            image: 镜像名称
            environment:
                环境变量
    networks:
        网络名称:
            driver: bridge
  • docker-compose.yml实例
version: '3'

services:
  mysqldb:
    image: mysql/mysql-server
    command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
    restart: always
    ports:
      - '3306:3306'
    environment:
      MYSQL_ROOT_PASSWORD= root123456
      MYSQL_USER= zrk
      MYSQL_PASSWORD= zrk123456
    volumes:
      - "/home/zrk/data/mysql/data:/var/lib/mysql"
      - "/home/zrk/data/mysql/conf/my.cnf:/etc/my.cnf"
      - "/home/zrk/data/mysql/logs:/logs"
      - "/home/zrk/data/mysql/init:/docker-entrypoint-initdb.d/"
  web:
    build: .
    container_name: 'aspnetcore'
    ports:
      - '8080:80'
    depends_on:
      - mysqldb

Swarm模式 集群

  • 管理节点、工人节点、服务、任务

正式搭建GitLab

系统环境

  • 1核2G 1M CentOS

安装gitlab

  • docker pull gitlab/gitlab-ce

  • docker run -d --name gitlab --restart always -p 8443:443 -p 80:80 -p 8822:22 -v /home/zrk/data/gitlab/config:/etc/gitlab -v /home/zrk/data/gitlab/logs:/var/log/gitlab -v /home/zrk/data/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

  • docker exec -it gitlab bash

配置gitlab.rb文件

  • sudo vi /home/zrk/data/gitlab/config/gitlab.rb
# 配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://127.0.0.1'

# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = '127.0.0.1'
gitlab_rails['gitlab_shell_ssh_port'] = 8822 # 此端口是run时22端口映射的8822端口
  • gitlab-ctl reconfigure

cpu跑满解决方案

  • 方案一:在gitlab.rb配置中取消unicorn的注释:unicorn[‘worker_processes‘] = 2
    • 略有改善
  • 方案二:创建swap分区(推荐方案)
    • 创建4G用于分区的文件:sudo dd if=/dev/zero of=/home/swap bs=512 count=8388616
    • 格式化为swap分区:sudo mkswap /home/swap
    • 启用swap分区:sudo swapon /home/swap
    • 设置为开机自启动:echo "/home/swap swap swap defaults 0 0" >>/etc/fstab
    • 查看分区:cat /proc/swaps
  • 清理缓存
    • sync
    • echo 1 > /proc/sys/vm/drop_caches
0

精彩评论

暂无评论...
验证码 换一张
取 消