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"