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