线下第三期_Docker 容器技术_20181028

Docker课程需要的镜像:

jenkins:latest

mysql:5.5

prom/prometheus:latest

grafana/grafana:latest

bitnami/mariadb:latest

selenium/node-chrome-debug:3.7.1-beryllium

selenium/hub:3.7.1-beryllium

prom/mysqld-exporter:latest

bitnami/testlink:latest

老师自己做了三个镜像+上面所有镜像百度云盘地址:

链接:百度网盘-链接不存在 密码:isgg

Docker最新课件已上传至腾讯课堂-课程概述—>Docker课件20181027.pdf

Docker的关键技术

  • Namespace
  • 联合文件系统
  • Cgroups

镜像管理命令

    1. docker pull {image_name} (拉取镜像)
    1. docker push {image_name} (推送镜像)
    1. docker images (查看当前机器的所有镜像)
    1. docker rmi {image_name} (删除当前机器的一个镜像)
    1. docker tag {source_images_name:tag your_image_name:tag} 为一个镜像打tag
    1. docker save busybox > busybox.tar
    1. docker load < busybox.tar.gz

容器管理命令

    1. docker run --name={your_name} --d {image_name} (运行容器)
    1. docker ps -s -a {查看当前所有容器}
    1. docker stop {container_name} (停止容器)
    1. docker kill (container_name) {杀死容器}
    1. docker rm -f {container_name} (删除容器)

查新信息相关命令

    1. docker logs -f {容器名称} (查看容器日志)
    1. docker info (查看docker服务的信息)
    1. docker inspect {容器名称} (查看容器的元数据)

与容器交互的命令

    1. docker exec -it {容器名称} bash 进入容器,exec的意思是在容器中运行一个命令。 如果是bash 并且指定了-it 就会打开容器的shell 交互
    1. docker cp {container:name}:{container_path} {host_path} 把宿主机上的一个文件copy到容器中

容器运行命令的一些参数

    1. –name 指定容器名称
    1. -d 后台运行
    1. -port 指定端口映射规则
    1. –network 指定容器运行的网路模式
    1. -v 指定需要挂载的数据卷
    1. -env 指定需要传递给容器的环境变量

搭建jenkins

    1. docker pull jenkins
    1. docker rm -f myjenkins
    1. docker run --name myjenkins -itd --network host -v /home/gaofei/tech/images/jenkins_home:/var/jenkins_home --env JAVA_OPTS=“-Xmx8192m” jenkins
    1. docker run --name myjenkins -itd -p 8001:8080 -v /home/gaofei/test/jenkins_home:/var/jenkins_home --env JAVA_OPTS=“-Xmx8192m” jenkins

PS: 注意挂载权限:sudo chown -R 1000:1000 /home/docker/jenkins

桥接模式

BRIDGE模式

搭建testlink

    1. docker run -d --name mariadb -e ALLOW_EMPTY_PASSWORD=yes -e MARIADB_USER=bn_testlink -e MARIADB_DATABASE=bitnami_testlink -v /home/gaofei/test/mysql:/var/lib/mysql -p 8088:3306 bitnami/mariadb:latest
    1. 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

使用selenium docker(拉镜像)

    1. docker pull selenium/node-chrome-debug:3.7.1-beryllium
    1. docker pull selenium/hub:3.7.1-beryllium

启动命令

  • 1.docker run --name=hub -p 5001:4444 -e GRID_TIMEOUT=0 -e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true -e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 -e GRID_BROWSER_TIMEOUT=15000 -e GRID_TIMEOUT=30000 -e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium
  • 2.docker run --name=chrome -p 5902:5900 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium
  • VNC密码是:secret

启动prometheus和node-exporter

    1. docker run --name prometheus -d -p 9090:9090 -v pwd/prometheus.yml:/etc/prometheus/prometheus.yml -v pwd/rules/:/etc/prometheus/ prom/prometheus --config.file=/etc/prometheus/prometheus.yml
    1. 下载好node exporter的包后,运行: ./node_exporter

prometheus配置文件

global:
  scrape_interval:     15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - localhost:9093

rule_files:
  - rules/*.rules

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['39.105.132.200:9090']
  - job_name: 'node_exporter'
    static_configs:
    - targets: ['39.105.132.200:9100']
  - job_name: 'mysql'
    static_configs:
    - targets: ['39.105.132.200:9104']

启动grafana

    1. docker run --name grafana -d -p 8000:3000 grafana/grafana

启动mysqld-exeporter

    1. docker run -d --name mysql-exporter -p 9104:9104 -e DATA_SOURCE_NAME=“root:1qaz9ol.@(39.105.132.200:8888)/mysql” prom/mysqld-exporter

内存使用率

  • 100*(node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / node_memory_MemTotal_bytes

磁盘使用率

  • 100.0 - 100 * ((node_filesystem_avail_bytes{mountpoint=~“/”, device!=“rootfs”} / 1000 / 1000 ) / (node_filesystem_size_bytes{mountpoint=~“/”, device!=“rootfs”} / 1024 / 1024))

https://grafana.com/dashboards/6239/revisions