docker基础笔记
windows 安装使用
安装exe
安装wsl,wsl2
- 非系统盘安装linux子系统
https://docs.microsoft.com/zh-cn/windows/wsl/install-manual
- 镜像加速
"https://rvpdnlir.mirror.aliyuncs.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
常用命令
docker run --name hello -itd -P my:v1
docker container ls
docker container start
docker container stop
docker container rm test
docker stats
docker inspect -f
docker build -f dw -t dw:v2 .
docker exec -it test bash
docker images
docker image rm
docker run --name dw1 -P -p 33001:22 -itd dw:v2 && docker run --name dw2 -P -p 33002:22 -itd dw:v2 && docker run --name dw3 -P -p 33003:22 -itd dw:v2
docker container stop dw1 && docker container rm dw1 && docker container stop dw2 && docker container rm dw2 && docker container stop dw3 && docker container rm dw3
docker info
docker version
docker 命令 --help
帮助文档
镜像命令
docker images
docker image rm
搜索镜像
docker search
docker pull
docker rmi -f 容器id
容器命令
新建容器并启动
docker run [] image
-d 后台方式运行
-it 交互
-p 指定端口
-P 随机指定端口
docker ps -a
ctrl+ p+ q 退出后不关闭容器
docker rm -rf $(docker ps -aq)
启动和停止容器
docker start
docker stop
docker restart
docker kill
常用其他命令
doceker run -d
日志
docker logs -ft --tail 19 id
查看容器中进程信息ps
docker top id
查看镜像元数据
docker inspect id
进入当前正在运行的容器
docker exec -it id bash
exec和attach的区别
从容器内拷贝文件到主机
docker cp id:/home/test.java /home
-rm 容器停止后就删除
总结
容器数据卷
使用数据卷
使用 -v 主机目录:容器内目录
示例
# -d 后台运行
# -p 端口映射
# -v 卷挂载
# --name 容器名字
docker run -d -p 3310:3306 -v /home/docker/mysql/conf:/etc/mysql/conf.d -v /home/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql
- 具名和匿名挂载
docker volume ls
匿名挂载
-v 只写容器内路径
具名挂载
-v 指定卷名:容器内路径
查看卷名的路径
docker volume inspect 卷名
-v :ro 路径只能通过宿主机操作,容器内部不能操作
-v :rw
挂载
- -v 容器内路径 # 匿名挂载
- -v 卷名:容器内路径 # 具名挂载
- -v 宿主机路径:容器内路径 # 指定路径挂载
数据卷容器
多个mysql同步数据
--volumes-from 容器名 #多个容器”互相“共享数据
删除是否会影响??????
Dockerfile
docker build -f filename -t imagename .
基础知识
- 每个保留关键字(指令)都是必须是大写字母
- 执行从上到下顺序执行
- #表示注释
- 每一个指令都会创建提交一个新的镜像层,并提交!
FROM # 基础镜像,一切从这里开始构建
MAINTAINER # 镜像是谁写的,姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 添加内容,压缩包等
WORKDIR # 镜像的工作目录
VOLUME # 挂载目录
EXPOSE # 保留端口配置
CMD # 指定这个容器启动时要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD # 当构建一个被集成Dockerfile 这个时候就会运行ONBUILD的指令,触发指令
COPY # 类似ADD,将我们文件拷贝到镜像中
ENV # 构建时设置环境变量
Docker网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1
docker run -d -P --name tomcat1 --net mynet
#网络联通
docker network connect 网络名 容器名
Docker Compose
简介
定义、运行多个容器
YAML 配置文件
命令有哪些
作用:批量容器编排
Compose是docker官方的开源项目,需要安装
Dockerfile让程序在任何地方运行。web服务。redis、mysql、nginx...多个容器。
docker-compose.yml:
version: "3.9" # optional since v1.27.0
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
compose: 重要概念
- 服务services,容器。
- 项目project。一组关联的容器。
安装:
- 下载
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 授权
sudo chmod +x /usr/local/bin/docker-compose
体验
- 应用 app.py
- Dockerfile 应用打包为镜像
- Docker-compose yaml文件 (定义整个服务,需要的环境。web,redis)
- 启动compose项目(docker-compose up)
Docker小结
- Docker镜像
- Dockerfile构建镜像
- docker-compose启动项目(编排、多个微服务/环境)
- Docker网络
自己搭建一些开源项目
掌握: docker基础,原理、网络、服务、集群、错误排查、日志。
Docker Swarm
工作模式
搭建集群
生成主节点 init
docker swarm init --advertise-addr ip
加入(管理者、worker)
docker swarm join --token ......
Raft协议
保证大多数节点存活才可以用。 只要 > 1,集群至少大于3台!
集群可用:3个主节点,>1台管理节点存活。
概念总结
swarm
集群的管理和编号。docker可以初始化一个swarm集群,其他节点可以加入(manager,worker)
node
就是一个docker节点。多个节点就组成了一个网络集群。
service
任务,可以在管理节点或者工作节点来运行。核心!供用户访问!
task
容器内的命令,细节任务。
overlay ingress 网络模式???????????
Docker Stack
docker-compose 单机部署项目
docker stack部署,集群部署
Docker Secret
安全。配置密码、证书。
Docker Config
配置
扩展到k8s
云原生时代
GO语言!必须掌握!
GO是并发语言