简单记录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

  • 安装

  • 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服务器的更多相关文章

  1. Centos7使用docker搭建gitlab服务器

    了解到docker的优点,搭建快,运行要求资源低,最重要的是实现的功能和效果都能达到预期,于是决定使用docker来搭建gitlab服务器. 效果图如下: 系统环境:CentOS Linux rele ...

  2. docker搭建gitlab服务器(Centos7)

    系统环境:CentOS Linux release 7.6.1810 (Core) git版本:gitlab/gitlab-ce 一.安装和启动docker 见HTTPRUNNERMANAGER安装部 ...

  3. 基于Docker搭建GitLab服务器

    运行环境:CentOS 7.4 一.安装Docker Docker安装可以参照runoob教程(http://www.runoob.com/docker/centos-docker-install.h ...

  4. 使用docker搭建gitlab 服务器

    本次使用的docker版本为 1.首先需要安装docker. 2.启动docker后,service docker start   3.拉取镜像  docker pull gitlab/gitlab- ...

  5. Docker搭建Gitlab服务器

    1.使用docker搜索gitlab镜像 docker search gitlab 2.下载镜像: docker pull docker.io/gitlab/gitlab-ce 3.查看docker镜 ...

  6. [转帖]知乎专栏:正确使用 Docker 搭建 GitLab 只要半分钟

    正确使用 Docker 搭建 GitLab 只要半分钟 https://zhuanlan.zhihu.com/p/49499229 很多程序员在内网搭建 gitlab 都搭建的坑坑洼洼,不支持 htt ...

  7. Ubuntu Docker搭建GitLab以及常规配置使用

    安装启动实例 1.首先创建一个目录用于存放配置 sudo docker pull docker.io/gitlab/gitlab-ce sudo mkdir -p /root/docker/gitla ...

  8. Ubuntu搭建Gitlab服务器

    想到Gitlab就必定会想到SVN,因为两者都是代码管理系统,作为开发人员来说,用习惯了SVN的图形化界面和SVN代码更新和提交的方式, 可能就会觉得使用git会比较麻烦,其实不然git使用起来非常方 ...

  9. 搭建GitLab服务器

    前言 每一个开发工作者无非身处2中开发环境:1.开源环境  2.闭源开发环境,若你身处闭源环境或对自己代码安全性要求较高,搭建和使用自己GitLab服务器是必不可少的环节. 可以通过各种方式搭建自己的 ...

随机推荐

  1. 漫步Facebook开源C++库Folly之string类设计(散列、字符串、向量、内存分配、位处理等,小部分是对现有标准库和Boost库功能上的补充,大部分都是基于性能的需求而“重新制造轮子”)

    就在近日,Facebook宣布开源了内部使用的C++底层库,总称folly,包括散列.字符串.向量.内存分配.位处理等,以满足大规模高性能的需求. 这里是folly的github地址:https:// ...

  2. 12 寸 Retina MacBook 的大秘密: 可用移动电源充电

    苹果新款12寸Retina MacBook虽然只有一个USB-C接口,但这个接口的能力却十分强大.它不仅可以进行数据传输和视频输出,还能接收和输入电源.这也就是说,你可以使用移动电源对其进行充电,如果 ...

  3. 微软Skype实时口译增加中文

    直击现场 在机器翻译技术上,微软的 Skype 业务也算是行业内名列前茅.日前其实时口语翻译技术再次跃升一个台阶,新增了对中文(普通话)的翻译支持. 据美国科技新闻网站 TheVerge 报道,此前, ...

  4. 原生Js汉语拼音首字母匹配城市名/自动提示列表

    根据城市的汉语名称首字母把城市排序,基本思路: 1.处理数据,按照需要的格式分别添加{HOT:{hot:[],ABCDEFG:{a:[1,2,3],b:[1,2,3]},HIGHLMN:{},OPQR ...

  5. .NET中生成水印更好的方法

    .NET中生成水印更好的方法 为了保护知识产权,防止资源被盗用,水印在博客.网店等场景中非常常见. 本文首先演示了基于System.Drawing.Image做正常操作.然后基于Direct2D/WI ...

  6. Flask学习之旅--简易留言板

    一.写在前面 正所谓“纸上得来终觉浅,方知此事要躬行”,在看文档和视频之余,我觉得还是要动手做点什么东西才能更好地学习吧,毕竟有些东西光看文档真的难以理解,于是就试着使用Flask框架做了一个简易留言 ...

  7. esxi虚机迁移到Workstation

    虚拟机的文件管理由VMware Workstation来执行.一个虚拟机一般以一系列文件的形式储存在宿主机中,这些文件一般在由workstation为虚拟机所创建的那个目录中. 如下图所示:(< ...

  8. java集合框架中的去重问题

    对于自定义的类来说,必须要重写hashcode和equals方法 hashcode方法的作用是确定元素在数据结构中的位置,当两个元素的hash值一样时,需要用equals方法判断两个元素是否是一样的, ...

  9. XTOJ 1267:Highway(树的直径)***

    http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1267 题意:给出一棵树,每条树边有权值,现在要修建n-1条边,边的权值为边 ...

  10. POJ 3621:Sightseeing Cows(最优比率环)

    http://poj.org/problem?id=3621 题意:有n个点m条有向边,每个点有一个点权val[i],边有边权w(i, j).找一个环使得Σ(val) / Σ(w)最大,并输出. 思路 ...