跳至主要內容

docker基础笔记

Alooc...大约 5 分钟后端技术dockerdocker

windows 安装使用

  1. 安装exe

  2. 安装wsl,wsl2

https://docs.microsoft.com/zh-cn/windows/wsl/install-win10#step-4---download-the-linux-kernel-update-packageopen in new window

  1. 非系统盘安装linux子系统

https://docs.microsoft.com/zh-cn/windows/wsl/install-manualopen in new window

  1. 镜像加速

"https://rvpdnlir.mirror.aliyuncs.comopen in new window",
"https://hub-mirror.c.163.comopen in new window",
"https://mirror.baidubce.comopen in new window"

常用命令

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 容器停止后就删除

总结

容器数据卷

使用数据卷

  1. 使用 -v 主机目录:容器内目录

  2. 示例

# -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
  1. 具名和匿名挂载
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 .
基础知识
  1. 每个保留关键字(指令)都是必须是大写字母
  2. 执行从上到下顺序执行
  3. #表示注释
  4. 每一个指令都会创建提交一个新的镜像层,并提交!
FROM          # 基础镜像,一切从这里开始构建
MAINTAINER    # 镜像是谁写的,姓名+邮箱
RUN           # 镜像构建的时候需要运行的命令
ADD           # 添加内容,压缩包等
WORKDIR       # 镜像的工作目录
VOLUME        # 挂载目录
EXPOSE        # 保留端口配置
CMD           # 指定这个容器启动时要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT    # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD       # 当构建一个被集成Dockerfile 这个时候就会运行ONBUILD的指令,触发指令
COPY          # 类似ADD,将我们文件拷贝到镜像中
ENV           # 构建时设置环境变量

img
img

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。一组关联的容器。

安装:

  1. 下载
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
  1. 授权
sudo chmod +x /usr/local/bin/docker-compose

体验

  1. 应用 app.pyopen in new window
  2. Dockerfile 应用打包为镜像
  3. Docker-compose yaml文件 (定义整个服务,需要的环境。web,redis)
  4. 启动compose项目(docker-compose up)

Docker小结

  1. Docker镜像
  2. Dockerfile构建镜像
  3. docker-compose启动项目(编排、多个微服务/环境)
  4. Docker网络

自己搭建一些开源项目

掌握: docker基础,原理、网络、服务、集群、错误排查、日志。

Docker Swarm

工作模式
搭建集群
  1. 生成主节点 init

    docker swarm init --advertise-addr ip
    
  2. 加入(管理者、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是并发语言

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.5