zoukankan      html  css  js  c++  java
  • docker安装与使用记录(debian9)

    win10 通过Xshell连接linux机子

    安装

    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 ,选择推荐的方式安装
      1. 创建账户或使用admin直接登陆。我这里直接使用admin
      1. 一路保存,最后

    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

    踩坑记录:

    1. 挂载文件后,执行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
      没有报错。
  • 相关阅读:
    [BFS][链表][二分][STL]JZOJ 5875 听我说,海蜗牛
    [SPFA]JZOJ 5869 绿洲
    [Splay]Luogu 3960 NOIP2017 列队
    [扩欧]JZOJ 5855 吃蛋糕
    [模拟退火][堆优化Prim]2017TG Day2 T2 宝藏
    [并查集]奶酪
    [容斥]JZOJ 5843 b
    JS Undefined 类型
    Python logging 模块
    14.浏览器屏幕缩放bug修复
  • 原文地址:https://www.cnblogs.com/congyinew/p/12864716.html
Copyright © 2011-2022 走看看