服务器是centos 7
安装docker
1.yum install -y yum-utils device-mapper-persistent-data lvm2
安装必要的一些工具包
2.yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
设置docker下载仓库地址
3.yum list docker-ce --showduplicates | sort -r
列出docker的版本
4.#install指定版本的docker
yum install docker-ce-18.06.3.ce
docker安装gitlab
- 创建gitlab的宿主主机的映射文件夹
mkdir -p /software/gitlab/config mkdir -p /software/gitlab/logs mkdir -p /software/gitlab/data
2.docker pull gitlab
获取gitlab镜像
3.#执行docker run命令启动gitlab容器
docker run --detach \
--hostname gitlab.office2.com \
--publish 9443:443 --publish 9980:80 --publish 9922:22 \
--name gitlab \
--restart always \
--volume /software/gitlab/config:/etc/gitlab \
--volume /software/gitlab/logs:/var/log/gitlab \
--volume /software/gitlab/data:/var/opt/gitlab \
--privileged=true \
gitlab/gitlab-ce:latest
-d:后台运行
-p:将容器内部端口向外映射
–name:命名容器名称
-v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录
vim /software/gitlab/config/gitlab.rb 修改gitlab的一些配置
external_url:修改为域名访问
gitlab_rails[‘gitlab_ssh_host’]= ‘域名’
gitlab_rails[‘gitlab_shell_ssh_port’] = 端口
#查看tcp协议的开发端口
netstat -ntpl
docker安装nginx
- #创建nginx的映射配置文件夹
mkdir -p /software/master-nginx/{conf,conf.d,html,logs,cert}
2.创建nginx的docker容器
docker run --name master-nginx -d \
-p 80:80 -p 443:443 \
-v /etc/localtime:/etc/localtime \
-v /software/master-nginx/cert:/etc/nginx/cert \
-v /software/master-nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /software/master-nginx/html:/usr/share/nginx/html \
-v /software/master-nginx/conf.d:/etc/nginx/conf.d \
-v /software/master-nginx/logs:/var/log/nginx nginx
注意的点:docker安装nginx监听的是80端口,然后需要修改nginx.conf文件,转发的时候需要填上服务器的内网ip或者容器ip
安装的时候记得同步宿主主机的时区,不然nginx打印的日志时区会出现时区不对的情况
cert目录是放nginx的ssl证书
docker安装jenkins
1.获取jenkins镜像
docker pull jenkinsci/blueocean
2.跑jenkins的docker镜像
docker run \
-u root \
-d \
-p 9090:8080 \
-p 51000:50000 \
--name jenkins-blue \
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \
-v /etc/localtime:/etc/localtime \
-v /software/jenkins:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
-v /var/run/docker.sock:/var/run/docker.sock \ 这个很重要,可以通过jenkins
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \设置jvm的时区,不然时区会不正常
-v /etc/localtime:/etc/localtime \与宿主主机的时间同步
创建或者启动外部的docker容器
docker安装redis集群
1.创建集群文件夹
mkdir redis-cluster
cd redis-cluster
mkdir redis-cluster.tmpl
redis-cluster.tmpl的内容如下
port ${PORT} #端口
protected-mode no #关闭保护模式,需要外网访问需要关闭
requirepass 123456 #设置密码
cluster-enabled yes #是否集群模式
cluster-config-file nodes.conf #集群节点配置
cluster-node-timeout 5000 #超时时间
cluster-announce-ip 服务器内网ip #docker安装的时候需要配置的
cluster-announce-port ${PORT} #端口
cluster-announce-bus-port 1${PORT} #集群通信端口
appendonly yes #是否持久化
2.根据模板文件执行命令创建文件夹
这种方式不绑定容器ip
for port in `seq 7001 7006`; do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
这种方式绑定容器的固定ip,从11-16
for port in `seq 7001 7006`; do \
base=6990 \
&& ip=$[port-base] \
&& mkdir -p ./${port}/conf \
&& PORT=${port} TEMP=${ip} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
3.执行命令创建redis 的docker容器
这种方式是指定网络模式为host
for port in `seq 7001 7006`; do \
docker run -d -ti \
-v /software/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /software/redis-cluster/${port}/data:/data \
--restart always --name redis-${port} --net host \
--sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \
done
这种方式网络模式为桥接模式,并且固定容器的ip
for port in `seq 7001 7006`; do \
base=6990
myips=$[port-base]
docker run -d -ti \
-v /software/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /software/redis-cluster/${port}/data:/data \
--restart always --name redis-${port} --net my-net --ip 172.18.0.${myips} \
--sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf; \
done
3.#进入redis容器内部
docker exec -it redis-7001 bash
执行如下命令:
redis-cli -a 1234565 --cluster create \
172.18.0.11:7001 \
172.18.0.12:7002 \
172.18.0.13:7003 \
172.18.0.14:7004 \
172.18.0.15:7005 \
172.18.0.16:7006 \
--cluster-replicas 1
以集群模式连接某个点
redis-cli -c -h 172.18.0.11 -p 7001 -a 123456
#查看集群状态
cluster info
#查看集群节点
cluster nodes
这里我采用的安装方式是创建了六个redis容器,并且采用网络模式是桥接模式,绑定固定的容器ip。然后用再创建一个nginx容器做转发
docker安装mysql数据库
1.搜索镜像
docker search mysql
2.拉取镜像
docker pull mysql
3.构建容器命令
docker run -p 3306:3306 --name dev-mysql \
-v /etc/localtime:/etc/localtime \
-v /software/dev-mysql/conf:/etc/mysql/conf.d \
-v /software/dev-mysql/logs:/logs \
-v /software/dev-mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=xxxxx \
-d mysql --lower_case_table_names=1
4.mysql8版本,一但mysql正式运行,就不能再设置忽略大小写了,强行设置会导致mysql服务启动不了,所以需要在最后加上–lower_case_table_names=1,启动的时候忽略大小写
5.安装好了之后,进入mysql容器内部
docker exec -it dev-mysql
mysql -u root -p
连接数据库之后要执行
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'XXXX';
flush privileges;
需要开启数据库远程连接并更改数据库密码的加密规则,不然用工具无法连接,会报错
docker常用命令
docker create //创建容器
docker run //相当于 create和start的集合命令
docker stop //停止容器
docker start //启动容器
docker restart //重启容器
docker rm //删除容器
docker rmi //删除镜像