全栈工程师开发手册 (作者:栾鹏)
架构系列文章
docker安装mysql
docker search mysql 搜索
docker pull mysql:5.6 下载
docker images |grep mysql 查看
docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=admin -d mysql:5.7 运行
命令说明:
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
-v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
docker ps 查看镜像的运行
运行后进入容器进行初始化
# mysql -u root -p
# create database note;
docker安装redis
docker search redis 搜索
docker pull redis:3.2 下载
docker images redis 查看
docker run -p 6379:6379 -v $PWD/data:/data -d redis:3.2 redis-server --appendonly yes 运行
命令说明:
-p 6379:6379 : 将容器的6379端口映射到主机的6379端口
-v $PWD/data:/data : 将主机中当前目录下的data挂载到容器的/data
redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
docker ps 查看运行情况
docker 安装postgres
docker run --name postgres1 -e POSTGRES_PASSWORD=admin -p 5432:5432 -d postgres:latest
解释:
run,创建并运行一个容器;--name
,指定创建的容器的名字;-e POSTGRES_PASSWORD=admin
,设置环境变量,指定数据库的登录密码为admin;-p 54321:5432
,端口映射将容器的5432端口映射到外部机器的54321端口;-d postgres:latest
,指定使用postgres:latest作为镜像。
注意:
postgres镜像默认的用户名为postgres,
登陆密码为创建容器是指定的值。
docker 部署 rancher
官网参考:https://www.cnrancher.com/docs/rancher/v2.x/cn/installation/server-installation/single-node-install/
docker run -d --restart=unless-stopped -p 8001:80 -p 8002:443 -v /root/var/log/auditlog:/var/log/auditlog -e AUDIT_LEVEL=3 rancher/rancher:latest
在登录界面记得选择语言,使用汉化版的rancher
若要将k8s添加到rancher中,需要执行一个命令,这个在rancher中有提示。
docker 部署Portainer
Portainer为docker容器管理组件。
$ docker volume create portainer_data
$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
然后在pc上访问127.0.0.1:9000就可以。进入后会让你添加docker的endpoint。先添加一个local的。就可以看到本地的容器和镜像了。
添加远程服务器的docker管理
在服务器上执行下面的命令。
记得将下面的HOST换成你自己的docker主机的hostname,不要通过设置变量实现。
生成CA公钥和私钥:
openssl genrsa -aes256 -out ca-key.pem 4096 # 生成CA私钥,会让你设置密码,记住你设置的密码
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem #生成CA公钥,也就是证书 输入上面的密码,以及国家组织等信息,
其中Common Name要设置成hostname
Common Name (e.g. server FQDN or YOUR name) []:$HOST
现在我们有了CA,就可以创建服务器私钥和证书请求文件了
openssl genrsa -out server-key.pem 4096 # 生成服务器私钥
openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr # 用私钥生成证书请求文件
现在,我们可以用CA来签署证书了。这里我们可以填写IP地址或则DNS name,如,我们需要允许服务器外网ip和服务器内网ip 172.16.0.230和127.0.0.1连接:
echo subjectAltName =IP:139.159.206.232,IP:172.16.0.230,IP:127.0.0.1 > extfile.cnf
# 将Docker守护程序密钥的扩展使用属性设置为仅用于服务器身份验证:
$ echo extendedKeyUsage = serverAuth >> extfile.cnf
$ openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
在服务器上生成客户端证书:
$ openssl genrsa -out key.pem 4096 # 客户端私钥
$ openssl req -subj '/CN=client' -new -key key.pem -out client.csr # 客户端证书请求文件
用CA为客户端签署证书文件:
# 要使密钥适配客户端身份验证,请创建扩展配置文件:
$ echo extendedKeyUsage = clientAuth >> extfile.cnf
$ openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
删除证书请求文件:
$ rm -v client.csr server.csr
默认的私钥权限太开放了,为了更加的安全,我们需要更改证书的权限,删除写入权限,限制阅读权限(只有你能查看):
$ chmod -v 0400 ca-key.pem key.pem server-key.pem
证书文件删除其写入权限:
$ chmod -v 0444 ca.pem server-cert.pem cert.pem
证书的部署:
我这里是ubunu系统
sudo vi /etc/default/docker
如:DOCKER_OPTS="-D --tlsverify=true --tlscert=/var/docker/server-cert.pem --tlskey=/var/docker/server-key.pem --tlscacert=/var/docker/ca.pem
-H tcp://0.0.0.0:2376"
$ sudo service docker restart
下面使用客户端链接,需要
将ca.pem、cert.pem、key.pem文件下载到本地。
docker --tlsverify --tlscacert=./ca.pem \
--tlscert=./cert.pem \
--tlskey=./key.pem \
-H=139.159.206.232:2376 version
可以在endpoint页面,创建一个入口点,设置url为139.159.206.232:2376,并添加ca.pem、cert.pem、key.pem三个文件。
参考:https://docs.docker.com/engine/security/https/#secure-by-default
docker 部署蝉道
docker run --name zentao -it --restart always -v /home/lp/docker/zentao/zbox:/opt/zbox -p 11111:80 haha123/zentao
账号密码: admin/123456
进入后会提醒修改账号密码
docker 安装JIRA
1.pull docker 镜像: jira:latest(目前的最新版本) mysql:5.7
版本信息可以参考:https://hub.docker.com/r/cptactionhank/atlassian-jira-software/tags
docker pull cptactionhank/atlassian-jira-software
docker pull mysql:5.7
2.启动mysql docker实例
docker run --name atlassian-mysql --restart always -p 3306:3306 -v /opt/mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 #记得修改passwd
3.连接mysql
docker run -it --link atlassian-mysql:mysql --rm mysql:5.7 sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
4.创建jira数据库,并添加jira用户 【mysql操作台执行】
create database jira default character set utf8 collate utf8_bin;
CREATE USER `jira`@`%` IDENTIFIED BY 'jira';GRANT ALL ON *.* TO `jira`@`%` WITH GRANT OPTION;
alter user 'jira'@'%' identified with mysql_native_password by 'jira';
5.修改mysql事物隔离级别 【mysql操作台执行】
set global transaction isolation level read committed;
set session transaction isolation level read committed;
6.启动jira实例
docker run --detach --restart always -v /data/atlassian/confluence:/home --publish 8080:8080 cptactionhank/atlassian-jira-software
7.访问:192.168.x.x:8080 进行jira配置。配置过程略。配置完成如下图:
http://192.168.x.x:8080/secure/WelcomeToJIRA.jspa
sonarqube
部署服务端
docker run --name sonar -e SONARQUBE_JDBC_USERNAME=root -e SONARQUBE_JDBC_PASSWORD=admin -e SONARQUBE_JDBC_URL='jdbc:mysql://192.168.11.127:30369/sonar?useUnicode=true&characterEncoding=utf8' -p 9000:9000 sonarqube:6.7.5
第一次登录会让设置账户,进而生成一个token,这个token是客户端访问的凭证。
下载sonar-scanner :http://redirect.sonarsource.com/doc/install-configure-scanner.html
在项目文件夹下执行
sonar-scanner -Dsonar.projectKey=test -Dsonar.sources=. -Dsonar.host.url=http://127.0.0.1:9000 -Dsonar.login=6a14734cf871e3ed2d694bbb71dc8fd0b9193d8b
其中Dsonar.host.url为服务端地址,Dsonar.login为登录生成的token,这样就能在客户端检查代码,将结果发送到服务端了
安装Confluence
持久化可是使用mysql或者postgresql
docker run -d --name confluence -p 8090:8090 --link mysql5.7:db --user root:root cptactionhank/atlassian-confluence:latest
docker run -d --name confluence -p 8090:8090 --link postgresql:db --user root:root cptactionhank/atlassian-confluence:latest
安装pgadmin4
docker run --name pgadmin -e "PGADMIN_DEFAULT_EMAIL=user@domain.com" -e "PGADMIN_DEFAULT_PASSWORD=admin" -p 80:80 -p 443:443 -d dpage/pgadmin4
安装harbor,构建私有仓库
下载地址:https://github.com/goharbor/harbor/releases,安装harbor需要先安装docker-compose。
下载 harbor-offline-installer-v1.10.0.tgz
wget https://github.com/goharbor/harbor/releases/download/v1.10.0/harbor-offline-installer-v1.10.0.tgz
tar -xvf harbor-offline-installer-v1.10.0.tgz
cd harbor
vim harbor.yml
配置harbor配置文件:
hostname = 192.168.0.104,不能配置localhost、127.0.0.1
harbor_admin_password = Harbor12345 harbor登陆密码
certificate: /etc/certs/ca.crt
private_key: /etc/certs/ca.key
# 创建自定义签名证书
mkdir /etc/certs
openssl genrsa -out /etc/certs/ca.key 2048
openssl req -x509 -new -nodes -key /etc/certs/ca.key -subj "/CN=192.168.0.104" -days 5000 -out /etc/certs/ca.crt
./install.sh
安装完成之后
ddocker-compose ps
启动Harbor
# docker-compose start
停止Harbor
# docker-comose stop
重启Harbor
# docker-compose restart
默认账号密码: admin / Harbor12345 登录后修改密码
执行docker login 192.168.0.104
输入用户名admin/Harbor12345
Login Succeeded #显示此字段说明登录成功可以上传下载镜像
可以使用https或者http,建议选择https
(5)客户端配置
客户端需要创建证书文件存放的位置,并且把服务端创建的证书拷贝到该目录下,然后重启客户端docker
$ mkdir -p /etc/docker/certs.d/192.168.38.23
把服务端crt证书文件拷贝到客户端,这里的客户端为192.168.38.21
$ scp /etc/certs/ca.crt root@192.168.38.21:/etc/docker/certs.d/192.168.38.23/
重启客户端docker
$ systemctl restart docker
部署nginx
docker run --name nginx -d -p 6800:80 -v /usr/docker/nginx/html:/usr/share/nginx/html -v /etc/docker/myNginx/nginx.conf:/etc/nginx/nginx.conf -v /etc/docker/myNginx/conf.d:/etc/nginx/conf.d nginx:latest