相关文章推荐
挂过科的海龟  ·  CommandBars.ExecuteMso ...·  4 月前    · 
胆小的橙子  ·  python 绘图 ...·  1 年前    · 
自信的小狗  ·  queueCount在VkDeviceQue ...·  1 年前    · 

https://www.runoob.com/docker/debian-docker-install.html
安装基本参照这个网址,没遇到什么坑

$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg2 \
    software-properties-common
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
$ sudo docker run hello-world

1.使用国内加速器

https://www.runoob.com/docker/docker-mirror-acceleration.html
基本按照这个网址进行设置,但是也遇到坑了,折腾好久

  • 首先新建文件daemon.json文件,因为docker安装默认是没有daemon.json文件。
    ls -a 在/etc/docker路径下,查看文件,确实没有daemon.json文件
    新建文件:touch daemon.json
  • 编辑daemon.json文件
    这里踩了个坑vi daemon.json,一直弹出一个警告Found a swap file by the name ".daemon.json.swp"
    对Linux不熟,查了半天才知道.swp文件是vi编辑器非正常关闭下生成的缓存文件,有这个存在的时候会弹出这个警告,使用命令进行删除即可rm .daemon.json.swp ,再次vi daemon.json编辑即可
  • 在文件中输入以下内容,并保存
  • "registry-mirrors": [ "https://hub-mirror.c.163.com/"
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

    2.下载jenkins

    https://hub.docker.com/
    在这里搜索Jenkins(注:需要注册登录)
    https://hub.docker.com/_/jenkins?tab=tags 最后在这里复制想要的版本pull命令
    (更换为国内镜像docker pull jenkinszh/jenkins-zh,不然插件死都下不了 https://blog.csdn.net/loveLifeLoveCoding/article/details/105774844?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
    jenkins中文社区 https://jenkins-zh.cn/
    回到xshell,把命令粘贴,等待下载结束

    3.查看已安装的镜像 docker images

    第1列repository: 镜像目录名称
    第2列tag: 版本号
    第3列IMAGE ID: 镜像的id
    第4列CREATED: 镜像安装的时间
    第5列SIZE:镜像的大小

    4.运行jenkins docker run -d --name myjenkins -p 8081:8080 jenkinszh/jenkins-zh

      -d : 后台运行
      --name :指定别名
      -p :端口映射,把宿主机的8081端口映射到容器的8080端口
      -e :指定环境变量 
    

    5.查看正在运行的镜像 docker ps

    6.查看日志 docker logs -f myjenkins

    日志里有一行
    Please use the following password to proceed to installation:
    下面写的就是Jenkins的登陆密码

    7.打开Jenkins

  • 1.win10打开浏览器输入Linux的ip地址加端口号8081(刚做端口映射的那个端口)
    http://192.168.2.4:8081
  • 2.输入Jenkins的密码(在第6点看到的那个)
  • 3.登陆成功Jenkins
  • 4.直接选择 install suggested plugins ,选择推荐的方式安装
  • 创建账户或使用admin直接登陆。我这里直接使用admin

    8.保存容器中的数据

    把宿主机上的某个目录挂载在容器中的目录上,容器运行过程需要的数据均保存在宿主机上,如此,即使容器被误删数据依然可以在宿主机上找到
    docker run --name myjenkins -itd --network host -v /home/test/jenkins_data:/var/jenkins_home --env JAVA_OPTS="-Xmx8192m" jenkinszh/jenkins-zh
    -v : 把宿主机的/home/test/jenkins_data挂载到容器的/var/jenkins_home

    9.关闭运行的jenkins,并删除

    docker stop myjenkins
    docker rm myjenkins
    

    10.删除镜像
    docker rmi [image]

    docker命令整理

  • 运行Jenkins。
    docker run --name myjenkins -itd --network host -p 8081:8080 -v /home/test/jenkins_data:/var/jenkins_home --env JAVA_OPTS="-Xmx8192m" jenkinszh/jenkins-zh
        --name : 指定容器名
        -i  : 以交互模式运行容器,通常与 -t 同时使用
        -t  : 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
        -d  : 以后台的方式运行容器,并返回容器id
        --network  :指定容器的网络连接类型 支持 bridge/host/none/container: 四种类型
        -p :端口映射,把宿主机的8081端口映射到容器的8080端口
        -v :文件挂载,把宿主机的/home/test/jenkins_data挂载到容器的/var/jenkins_home
        --env或 -e : 设置环境变量
    
  • 运行mariadb。
  • docker run --name mymariadb \
    -e ALLOW_EMPTY_PASSWORD=yes \
    -e MARIADB_USER=my_user \
    -e MARIADB_PASSWORD=my_password \
    -e MARIADB_DATABASE=my_database \
    -v /home/test/mariadb_data:/bitnami/mariadb\
    -p 3306:3306\ 
    bitnami/mariadb:latest
    
    -e ALLOW_EMPTY_PASSWORD=yes 设置环境变量,允许数据库密码为空
    -e MARIADB_USER=my_user   设置环境变量,数据库用户名为my_user
    -e MARIADB_PASSWORD=my_password  设置环境变量,数据库密码为my_password  
    -e MARIADB_DATABASE=bitnami_testlink #初始化数据库时的实例的名字
    
  • 容器交互命令,在容器里面执行一条命令,如果执行的命令时bash,相当于在容器中打开了bash窗口与db交互
    docker exec -it mariadb bash
  • 运行testlink
  • docker run -d --name testlink -p 8099:80 -p 444:443 -e ALLOW_EMPTY_PASSWORD=yes -e
    TESTLINK_DATABASE_USER=bn_testlink -e TESTLINK_DATABASE_NAME=bitnami_testlink --link mariadb
    bitnami/testlink:latest
     --link mariadb  把mariadb注入testlink(把容器mariadb的网络信息以环境变量的形式注入容器testlink

    踩坑记录:

  • 挂载文件后,执行docker logs -f myjenkins报错
    cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
    解决方法:
    https://segmentfault.com/a/1190000008618462
    简单来说,就是权限不够,-v /home/test/jenkins_data:/var/jenkins_home 把/var/jenkins_home映射到了宿主机的目录文件/home/test/jenkins_data上,但是宿主机的这个目录权限是给root的。需要改为容器里的jenkins。
    chown -R 1002:1002 /home/test/jenkins_data
    其中1002为当前用户的uid。通过cat /ect/passwd查看,找到当前登陆用户,即可获得uid
    docker run --name myjenkins -d -p 8081:8080 -v /home/test/jenkins_data:/var/jenkins_home jenkinszh/jenkins-zh
    docker logs -f myjenkins
    没有报错。
  •