使用docker搭建gitlab服务器
简单记录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
使用docker搭建gitlab服务器的更多相关文章
- Centos7使用docker搭建gitlab服务器
了解到docker的优点,搭建快,运行要求资源低,最重要的是实现的功能和效果都能达到预期,于是决定使用docker来搭建gitlab服务器. 效果图如下: 系统环境:CentOS Linux rele ...
- docker搭建gitlab服务器(Centos7)
系统环境:CentOS Linux release 7.6.1810 (Core) git版本:gitlab/gitlab-ce 一.安装和启动docker 见HTTPRUNNERMANAGER安装部 ...
- 基于Docker搭建GitLab服务器
运行环境:CentOS 7.4 一.安装Docker Docker安装可以参照runoob教程(http://www.runoob.com/docker/centos-docker-install.h ...
- 使用docker搭建gitlab 服务器
本次使用的docker版本为 1.首先需要安装docker. 2.启动docker后,service docker start 3.拉取镜像 docker pull gitlab/gitlab- ...
- Docker搭建Gitlab服务器
1.使用docker搜索gitlab镜像 docker search gitlab 2.下载镜像: docker pull docker.io/gitlab/gitlab-ce 3.查看docker镜 ...
- [转帖]知乎专栏:正确使用 Docker 搭建 GitLab 只要半分钟
正确使用 Docker 搭建 GitLab 只要半分钟 https://zhuanlan.zhihu.com/p/49499229 很多程序员在内网搭建 gitlab 都搭建的坑坑洼洼,不支持 htt ...
- Ubuntu Docker搭建GitLab以及常规配置使用
安装启动实例 1.首先创建一个目录用于存放配置 sudo docker pull docker.io/gitlab/gitlab-ce sudo mkdir -p /root/docker/gitla ...
- Ubuntu搭建Gitlab服务器
想到Gitlab就必定会想到SVN,因为两者都是代码管理系统,作为开发人员来说,用习惯了SVN的图形化界面和SVN代码更新和提交的方式, 可能就会觉得使用git会比较麻烦,其实不然git使用起来非常方 ...
- 搭建GitLab服务器
前言 每一个开发工作者无非身处2中开发环境:1.开源环境 2.闭源开发环境,若你身处闭源环境或对自己代码安全性要求较高,搭建和使用自己GitLab服务器是必不可少的环节. 可以通过各种方式搭建自己的 ...
随机推荐
- 搭建svn服务器&服务器客户端使用笔记
参考借鉴文章:http://www.cnblogs.com/vijayfly/p/5711962.html 之前尝试着用git管理公司代码,但被一个问题困惑了很久无法解决,那就是git该如何只pull ...
- 使用VS将 XML/Json 转为Model Class文件
环境: VS2015 Win10 XML例子: <OTA_GetRerStatusRQ EchoToken=" B3BB9248255BD851AC94" UserNam ...
- QTableWidget和 QTableView翻页效果(准确计算Scroll,然后使用setSliderPosition函数)
以QTableView举例,QTableWidget使用相同 int CQTTableViewPageSwitch::pageCount(QTableView *p)//QTableView 总页 ...
- Qt 不规则窗体 – 鼠标点击穿透(Linux也可以,有对x11的配置的方法)
之前写过如何用 Qt 现成的方法写出无边框半透明的不规则窗体:<Qt 不规则窗体 – 无边框半透明> 其实有一个很特殊的窗体属性一直以来都伴随着不规则窗体出现,这就是本文要介绍的鼠标点击穿 ...
- Qt移动开发大部分的场景基本上实现没问题,listview支持刷新3000~5000的实时数据没有任何压力(QML的几个大型应用)
作者:xq zh链接:https://www.zhihu.com/question/29636221/answer/47265577来源:知乎著作权归作者所有,转载请联系作者获得授权. 不知道vs移动 ...
- Qt实现网络播放器
写了这么多的博客,关于网络的还不算多,经常有人询问一些关于网络传输.制作在线试听及下载音乐.构造及解析数据等的一些问题,今天就在这里一并讲解. 网络操作: 主要涉及:QNetwor ...
- [2017.02.13] linux平台下统计C++项目文件个数和代码行数
#输出排序后文件名 file='find . -name "*.[ch]" | sort' #统计文件个数 filecnt='find . -name "*.[ch]&q ...
- Linux使用daemontools
功能: 在使用memcached时候,怕因为一些不可预知的因素导致memcached进程死掉,而又不能及时的发现重启,可以通过daemontools来管理memcached的启动,当memcached ...
- 一次项目代码重构-使用spring容器干掉条件判断
一次项目代码重构-使用spring容器干掉条件判断 这是在一次公司项目中进行重构时,一些复杂业务时想到的一个去掉一些if else的办法.能够使代码逻辑更加清晰,减少一些业务上的耦合. 业务说明 我所 ...
- API 文档管理工具 (Yapi) Docker Compose部署指南
前言介绍 Yapi 由 YMFE 开源,旨在为开发.产品.测试人员提供更优雅的接口管理服务,可以帮助开发者轻松创建.发布.维护 API. 权限管理 YApi 成熟的团队管理扁平化项目权限配置满足各类企 ...