docker笔记

docker 常用地址

docker官方文档
https://www.docker.com/
网易蜂巢查询镜像
https://c.163.com/hub#/home
hub.docker地址
https://hub.docker.com/
#jdk下载
https://mirrors.yangxingzhen.com/jdk/

docker常用命令

#查看docker容器系统
docker system df
#拉取镜像
docker pull 镜像名

#docker commit #commit自己的镜像
公式:docker commit -m="提交描述信息" -a="作者" 容器ID 要创建的目标镜像名称:[标签名]

#docker 交互式运行
公式 docker run -it 镜像ID或容器名 bash
docker run -it zhoufly/ubuntu bash

#docker修改tag
公式: docker tag 镜像:tag Host: Port/Repository:Tag
使用命令将zhoufly/ubuntu:latest这个镜像修改为192.168.179.21:5000/zhoufly/ubunru:1.0
docker tag zhoufly/ubuntu:latest 192.168.179.21:5000/zhoufly/ubunru:1.0

#docker宿主机持久化实例容器文件
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
例:docker run -d -it -v /root/host_data:/docker_data --privileged=true ubuntu:latest bash
默认容器内部可读写文件 :rw ,限制容器为只读 :ro
例:docker run -d -it -v /root/host_data:/docker_data:ro --privileged=true ubuntu:latest bash
容器卷继承 --volumes-form 父类
u2容器继承u1容器的容器卷
例:docker run  -d -it --privileged=true --volumes-from u1 --name u2 ubuntu bash

#docker 构建
docker build -t 新镜像名字:TAG Dockerfile路径

#删除虚悬镜像
docker image prune
#docker 网络命令
docker network 参数
#查看容器配置
docker inspect 容器ID
#创建network
docker network create zhoufly_network
#运行并添加网络
docker run -d --network zhoufly_network --name tomcat1 hub.c.163.com/library/tomcat:8.5

docker安装私服库registry


1.下载registry镜像
docker pull registry
2.运行docker镜像
默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调
docker run -d -p 5000:5000 -v /root/myregistry/:/tmp/registry --privileged=true registry
3.commit镜像
docker commit -m="this add ifconfig" -a="zhoufly" c4d3347682ce zhoufly/ubuntu:latest
4.验证私服库
 curl -XGET http://192.168.179.21:5000/v2/_catalog
5.修改符合需求tag
docker tag zhoufly/ubuntu:latest 192.168.179.21:5000/zhoufly/ubuntu:1.0
6.取消docker安全加固
   vim /etc/docker/daemon.json
  添加
  {
     "registry-mirrors": ["https://81ttfw4u.mirror.aliyuncs.com"],
     "insecure-registries":["192.168.179.21:5000"]
  }
7.推送镜像到私服库
  docker push 192.168.179.21:5000/zhoufly/ubunru:1.0
8.验证是否推送成功
  curl -XGET http://192.168.179.21:5000/v2/_catalog
8.拉取私服镜像
  docker pull 192.168.179.21:5000/zhoufly/ubunru:1.0

docker安装 mysql

 # 运行mysql 挂载容器卷
docker run -d -p 3306:3306 --privileged=true -v /root/mysql/log:/var/log/mysql -v /root/mysql/data:/var/lib/mysql -v /root/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root  --name mysql mysql:5.7
#编辑mysql my.cnf文件
vim /root/mysql/conf/my.cnf
#配置mysql my.cnf文件
[client]
default-character-set = utf8mb4
[mysqld]
character_set_server = utf8mb4
collation_server = utf8mb4_bin

docker运行redis

docker run -p 6379:6379 --name redis --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.0.8 redis server /etc/redis/redis.conf

Dockerfile

docker-boot-0.0.1-SNAPSHOT.jar 与 Dockerfile 在相同目录执行脚本:

docker build -t zhoufly_boot:1.0 .

Dockerfile文件内容

FROM java:8
#作者
MAINTAINER zhoufly
#VOLUME指定临时文件 目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并延续到连接到容器的/tmp VOLUME /tmp

#将jar包添加到容器中并更名为 docker-boot.jar
ADD docker-boot-0.0.1-SNAPSHOT.jar docker-boot.jar
#运行jar包
RUN bash -c 'touch /docker-boot.jar'
ENTRYPOINT ["java","-jar","/docker-boot.jar"]
#暴露服务端口6001
EXPOSE 6001

docker-componse

快速下载地址:


curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
官网地址:https://docs.docker.com/compose/install/

常用命令:

docker-compose -h #查看帮助
docker-compose up #启动所有docker-compose服务
docker-compose up -d #后台启动所有docker-compose服务
docker-compose down #停止并删除容器,网络,卷,镜像
docker-compose exec yml里面服务id  #进入容器实例内部 docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker-compose ps #展示当前docker-compose编排过的运行的所有容器
docker-compose top #展示当前docker-compose编排过的容器进程
docker-compose logs yml里面的服务id #查看容器输出日志
docker-compose config #检查配置
docker-compose config -q #检查配置,有问题才输出
docker-compose restart #重启服务
docker-compose start #启动服务
docker-compose stop #停止服务

样例内容容下:

version: "3"
services:
microService:
  image: zhoufly_boot:1.0
  container_name: ms01
  ports:
    - "6001:6001"
  volumes:
    - /app/microService:/data
  networks:
    - zhoufly_net
  depends_on:
    - redis
    - mysql
redis:
  image: redis:6.0.8
  container_name: redis01
  ports:
    - "6379:6379"
  volumes:
    - /app/redis/redis.conf:/etc/redis/redis.conf
    - /app/redis/data:/data
  networks:
    - zhoufly_net
  command: redis-server /etc/redis/redis.conf

mysql:
  image: mysql:5.7
  container_name: mysql01
  environment:
    MYSQL_ROOT_PASSWORD: 'root'
    MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
    MYSQL_DATABASE: 'test'
  ports:
    - "3306:3306"
  volumes:
    - /app/mysql/db:/var/lib/mysql
    - /app/mysql/conf/my.cnf:/etc/my.cnf
    - /app/mysql/init:/docker-entrypoint-initdb.d
  networks:
    - zhoufly_net
  command: --default-authentication-plugin=mysql_native_password #解决外部无法访问

networks:
zhoufly_net:

 

portainer

官网: https://www.portainer.io/

安装portainer

-d #容器在后台运行

-p 9000:9000 # 宿主机9000端口映射容器中的9000端口

-v /var/run/docker.sock:/var/run/docker.sock # 把宿主机的Docker守护进程(docker daemon)默认监听的Unix域套接字挂载到容器中

-v /root/portainer:/data # 把宿主机目录 /root/portainer 挂载到容器 /data 目录;

–name dev-portainer # 指定运行容器的名称

注意: 在启动容器时必须挂载本地 /var/run/docker.socker与容器内的/var/run/docker.socker连接。



docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

CAdvisor+InfluxDB+Granfana

 

version: '3.1'

volumes:
grafana_data: {}

services:
influxdb:
  image: tutum/influxdb:0.9
  restart: always
  environment:
    - PRE_CREATE_DB=cadvisor #预设数据库
  ports:
    - "8083:8083"  #外部端口
    - "8086:8086"  #内部端口
  volumes:
    - /data/influxdb:/data
cadvisor:
  image: google/cadvisor
  links:
    - influxdb:influxsrv
  command: -storage_driver=influxdb -storage_friver_db=cadvisor -storage_driver_host=influxsrv:8086
  restart: always
  ports:
    - "8080:8080"
  volumes:
    - /:/rootfs:ro
    - /var/run:/var/run:rw
    - /sys:/sys:ro
    - /var/lib/docker/:/var/lib/docker:ro
grafana:
  user: "104"
  image: "grafana/grafana"
  restart: always
  links:
    - influxdb:influxsrv
  ports:
    - "3000:3000"
  volumes:
    - grafana_data:/var/lib/grafana
  environment:
    - HTTP_USER=admin
    - HTTP_PASS=admin
    - INFLUXDB_HOST=influxsry
    - INFLUXDB_PORT=8086
    - INFLUXDB_NAME=cadvisor
    - INFLUXDB_USER=root
    - INFLUXDB_PASS=root

 

上一篇:学不动了吗?Android Jetpack Compose 开发应用指南,从入门到精通,一篇就够了


下一篇:docker-compose搭建redis集群--Cluster模式