1、ssh远程连接 ,
简述:在120生成公钥和私钥,把120 公钥 加入121 的 authorized_keys。
前提:有2台linux主机,ip分别为120和121。我在120上部署了jenkins,和私服服务(学习测试,不要在意合理性),现在需要在jenkins上调用121上的docker,执行拉取镜像,运行容器等一系列操作。使用ssh连接使120能远程调用121上的docker服务。
1)连接120服务器
1、cd ~/.ssh/ # 非必须要进入~/.ssh目录
2、ssh-keygen -t rsa -C 'test@10.10.10.120' #-C 后面是备注,一般是用户名@ip,知道是哪台主机上的哪个用户的,一路回车,文件名和密码都不用输入
2)进入~/.ssh目录,可以看到有 authorized_keys、 id_rsa、 id_rsa.pub 三个文件
3)打开 id_rsa.pub ,选择ssh-rsa开头,中间一堆字符,-C 后边的备注结尾的段落,比如 ssh-rsa .... test@10.10.10.120

4) ;连接121服务器
5)进入~/.ssh目录,ls查看目录下内容,可以看到有 authorized_keys 文件
6)打开authorized_keys ,将3)中的内容拷贝进去。
7)在120使用 ssh test@10.10.10.121 就连接到121主机上了,类似于远程桌面连接。同时120的~/.ssh文件夹下会生成1个known_hosts,
8)使用ifconfig查看ip,显示的是10.10.10.121。这时再做的操作就是在121主机的操作了。
9)使用exit退出ssh连接
10)scp 命令可以在两台服务器之间拷贝,
2、搭docker镜像私服
1)拉取镜像
docker pull registry 2)运行容器
docker run --name local-registry -d -p 5000:5000 registry
3)修改docker配置文件daemon.json(没有则创建)
cd /etc/docker
添加 "insecure-registries": ["10.10.10.120:5000"]
daemon.json
{
"registry-mirrors": ["https://XXX.mirror.aliyuncs.com"], #镜像加速的,非必须
"insecure-registries":["10.10.10.120:5000"]
}
4)sudo systemctl daemon-reload,重新加载docker配置,使daemon.json起效。
5)使用 docker ps -a 查看容器 local-registry 是否正常运行。如果没有在运行,使用 docker start local-registry 启动容器。
6)在浏览器输入 http://10.10.10.120:5000/v2/_catalog 查看服务是否正常。刚开始页面显示 [],表示没有容器
7)推送镜像到私服命令: docker push 10.10.10.120:5000/testimg:v1
3、主机安装jenkins
1) 安装jdk,我的jdk版本是 java version "1.8.0_291"
2)新建文件夹jenkins,下载 jenkins-2-289-1.war。
3)运行 nohup java -jar jenkins-2-289-1.war --httpPort=8800 > jenkins.out 2>&1 &
4)10.10.10.120:8800启动jenkins,新建任务,其他步骤,构建-》执行shell
# 获取短版本号
GITHASH=`git rev-parse --short HEAD`
REGISTRY='10.10.10.120:5000'
SERVER_121='10.10.10.121'
docker stop test
docker rm test
echo '---------------Building Docker Image...------------------'
docker build -t testimg:$GITHASH ./testsrc
docker tag testimg:$GITHASH $REGISTRY/testimg:$GITHASH
docker push $REGISTRY/testimg:$GITHASH
echo '---------------Launching Container...------------------'
# 运行本机120容器
docker run --name test -d -p 8020:80 \
-v /data/test/log:/app/log \
-v /data/test/files:/app/Files \
$REGISTRY/testimg:$GITHASH
#运行121容器
ssh etcp@${SERVER_121} "/usr/bin/docker pull $REGISTRY/testimg:$GITHASH"
ssh etcp@${SERVER_121} "/usr/bin/docker stop test"
ssh etcp@${SERVER_121} "/usr/bin/docker rm test"
ssh etcp@${SERVER_121} "/usr/bin/docker run --name test -d -p 8020:80 \
-v /data/test/log:/app/log \
-v /data/test/files:/app/Files \
$REGISTRY/testimg:$GITHASH"
浙公网安备 33010602011771号