选择自定义虚拟机,一路 continue 下去。
然后点击 CD/DVD,其他不用的设备可以直接删掉。
然后开启虚拟机,跟着我 done 下去:
直到配置镜像地址,这里改成阿里云的:http://mirrors.aliyun.com/ubuntu
接着一定要选磁盘扩容,不然将来磁盘无法扩容。
更改逻辑卷
就改成最大的数值
continue 后继续:
点击 空格
键选择一定要安装 openssh ,不让无法远程连接。
这里没啥要装的,
如果你也要用 ssh 连接虚拟机,那你一定要更改 /etc/hosts
,不然你的 sudo
命令都会超慢。添加一条 127.0.0.1 localhost ubuntu
,别忘了 source /etc/hosts
。
接下来我要安装 docker 和 docker-compose ,没这个需求的同学可以散了。
这里介绍的是 apt 安装,放心整个速度都是超快的。
安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get -y update
sudo apt-get -y install docker-ce
以上命令会添加稳定版本的 Docker CE APT 镜像源,如果需要最新或者测试版本的 Docker CE 请将 stable 改为 edge 或者 test。从 Docker 17.06 开始,edge test 版本的 APT 镜像源也会包含稳定版本的 Docker。
运行 docker --version
试试,此时 docker 已经安装完成。
直接用国外的 docker hub 镜像实在是太慢了。也换过 Daocloud 的镜像源,还是很慢,每秒大概 500 kb。
这里,我为大家准备了中国科学技术大学(LUG@USTC)的开源镜像,速度蹭蹭蹭上去了:sudo vi /etc/docker/daemon.json
。
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}
注意里面不能随便加逗号,docker 会出问题。
记得最后执行一下 sudo systemctl daemon-reload
sudo systemctl restart docker
。
更多国内镜像源:
https://registry.docker-cn.com
http://hub-mirror.c.163.com
http://docker.mirrors.ustc.edu.cn
http://<你的ID>.mirror.aliyuncs.com
传说阿里云的镜像速度最快,登录访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
这里用到是二进制包安装的方法。
在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。
例如,在 Linux 64 位系统上直接下载对应的二进制包。
$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
然后通过 docker-compose --version
确认 docker-compose 安装成功。
下面我要全克隆 虚拟机了,没这个需求的同学可以走啦。
一定要确保要克隆的虚拟机已经关机。
shutdown -h now
关闭 ubuntu 。
双击需要克隆的虚拟机,选择全克隆。
克隆的虚拟机 ip 地址可能需要修改。
如果真的要修改 IP,先要把虚拟机改成桥接模式,然后生成一个 MAC 地址。
先用 ifconfig
查看 ip 地址,注意下面的 ens32
在每个计算机中都不同。
修改 vi /etc/netplan/50-cloud-init.yaml
network:
ethernets:
ens32:
dhcp4: false
addresses:
- 192.168.1.8/24 # IP及掩码
gateway4: 192.168.1.1 # 网关
nameservers:
addresses:
- 114.114.114.114 # DNS
version: 2
dhcp4 :false #false代表不是用dhcp动态获取ip,true代表使用dhcp动态获取ip
/24表示前24位是网络号,后8位是主机号,子网掩码以32位的2进制存在,网络号相同的则表示处于同一网段中,且子网掩码不能单独存在,它必须结合IP地址一起使用。
255.255.255.0 换成二进制就是11111111.11111111.11111111.00000000 一共24个1
8+8+8+0=24
使配置生效 netplan apply
。
汉化版 GitLab,注意虚拟机内存至少 2G。
docker pull twang2218/gitlab-ce-zh
我们使用 Docker 来安装和运行 GitLab 中文版,由于新版本问题较多,这里我们使用目前相对稳定的 10.5 版本,docker-compose.yml 配置如下:
version: '3'
services:
web:
image: 'twang2218/gitlab-ce-zh:10.5'
restart: always
hostname: '192.168.75.145'
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.75.145:8080'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
unicorn['port'] = 8888
nginx['listen_port'] = 8080
ports:
- '8080:8080'
- '8443:443'
- '2222:22'
volumes:
- /usr/local/docker/gitlab/config:/etc/gitlab
- /usr/local/docker/gitlab/data:/var/opt/gitlab
- /usr/local/docker/gitlab/logs:/var/log/gitlab
然后使用命令 docker-compose up -d
来启动,停止服务使用 docker-compose down
。
可以使用 docker ps
或者 docker-compose ps
查看容器是否启动成功。
然后可以通过 IP + 端口 访问 GitLab ,注意第一步设置密码至少八位,默认用户是 root 。
新建一个用户用该用户登录
创建完用户记得对用户进行再次编辑,设置初始密码
设置 ssh 公钥,根据 这篇 教程。
后面的操作就是 git 操作了。
如果虚拟机不用了,建议直接 shutdown ,不然再次开启容器也访问不到。
可以通过 docker logs -f gitlab_web_1
命令来运维,GitLab 服务器启动一般都要一两分钟。
docker pull sonatype/nexus3
version: '3.1'
services:
nexus:
restart: always
image: sonatype/nexus3
container_name: nexus
ports:
- 8081:8081
volumes:
- /usr/local/docker/nexus/data:/nexus-data
然后使用命令 docker-compose up -d
来启动,停止服务使用 docker-compose down
。
修改 /usr/local/docker/nexus/data
权限 chmod 777 /usr/local/docker/nexus/data
。
可以使用 docker ps
或者 docker-compose ps
查看容器是否启动成功。
可以通过 docker logs -f nexus
命令来运维,
访问 http://172.16.41.134:8081/
登录,默认用户名 admin,默认密码在 /usr/local/docker/nexus/data/admin.password
中。
重置密码直接和 GitLab 一样。
docker pull registry
version: '3.1'
services:
registry:
image: registry
restart: always
container_name: registry
ports:
- 5000:5000
volumes:
- /usr/local/docker/registry/data:/var/lib/registry
启动成功后需要测试服务端是否能够正常提供服务,有两种方式:
浏览器端访问,如:http://192.168.1.8:5000/v2/
终端访问
curl http://192.168.1.8:5000/v2/
我们的教学案例使用的是 Ubuntu Server 16.04 LTS 版本,属于 systemd
系统,需要在 /etc/docker/daemon.json
中增加如下内容(如果文件不存在请新建该文件),下面的 ip 地址填自己 Docker Registry 服务器的 IP 地址。
{
"registry-mirrors": [
"https://registry.docker-cn.com"
],
"insecure-registries": [
"192.168.1.8:5000"
]
}
注意:该文件必须符合 json 规范,否则 Docker 将不能启动。
之后重新启动服务。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
使用 docker info
命令手动检查,如果从配置中看到如下内容,说明配置成功
Insecure Registries:
192.168.1.8:5000
127.0.0.0/8
我们以 Nginx 为例测试镜像上传功能
## 拉取一个镜像
docker pull nginx
## 查看全部镜像
docker images
## 标记本地镜像并指向目标仓库(ip:port/image_name:tag,该格式为标记版本号)
docker tag nginx 192.168.1.8:5000/nginx
## 提交镜像到仓库
docker push 192.168.1.8:5000/nginx
curl -XGET http://192.168.1.8:5000/v2/_catalog
以 Nginx 为例,查看已提交的列表
curl -XGET http://192.168.1.8:5000/v2/nginx/tags/list
docker rmi nginx
docker rmi 192.168.1.8:5000/nginx
docker pull 192.168.1.8:5000/nginx