docker笔记
1、 创建一个新容器(不占用当前窗口):docker run -d –name 容器名字 镜像
2、 查看容器日志:docker logs 容器id
3、 进入容器内部:docker exec -it 容器 /bin/bash
4、 暴力删除容器:docker rm -f 容器id
5、 查看容器信息:docker inspect 容器id
6、 Docker三种数据挂载方式
A、 Volume :管理宿主机文件系统的一部分,命令:docker volume create 数据卷名字
该数据卷的地址由docker指定,如果dockers卸载了,该数据卷也不在了
Docker run -d –mount type=volume,source=数据卷,target=容器内部路径 容器名
B、 bind mounts(就是-v):可以存储在宿主机系统的任意位置,这种方式如果挂载文件夹,宿主机文件夹会覆盖容器内文件夹,一般用来挂载具体存在的文件
C、 tmpfs mounts:挂载存储在宿主机系统的内存中,不写入文件系统
7、 docker容器通信
A、 --link :docker run -d –name 容器名 –link 要连通的容器 镜像名
其实就是在hosts配置中增加一个映射
B、 容器都加入某一个网络,一般都使用bridge
--net :docker run -d -name 容器名 –net bridge 镜像名
C、 创建网络:docker network create 网络名(默认bridge)
8、 Dockerfile
A、 Docker build –no-cache -t 镜像名称:标签 .
--no-cache 表示不使用缓存,如果没这个命令,假设现在本地镜像仓库存在dockerfile里使用的镜像,那么就会引用已存在的镜像
“.” 指示dockerfile文件所在的路径
B、 Dockerignore
配合DOCKER_BUILDKIT=1使用,这是阿里开发的工具
DOCKER_BUILDKIT=1 Docker build –no-cache -t 镜像名称:标签 .
C、 --build-arg name=value 构建镜像时可以传参进dockerfile使用
D、Dockerfile文件命令
1、 ARG neme=默认值:构建镜像时从命令行传进来的参数,配合—build-arg使用
2、 ENV key=value:运行容器后可以使用该变量,配合docker run -e key=value使用
3、 RUN 命令:构建镜像时执行该命令,不是容器运行时运行命令
4、 CMD 命令:运行容器时执行该命令,dockerfile里如果有多个CMDM命令,以最后一个CMD为准
5、 ENTRYPOINT 命令:和CMD命令类似,都是指定容器的启动命令,不同之处在于ENTRYPOINT指定的命令无法被docker run携带的参数取代,反而docker run携带的参数被当做参数传递给ENTRYPOINT指令指定的命令
CMD指令可以为ENTRYPOINT指令设置默认参数,而且可以被docker run指定的参数覆盖
6、 EXPOSE 80/http:暴露端口
7、 COPY 宿主机docker上下文里的地址或文件 容器内地址
8、 ADD 跟COPY类似,但带有解压的功能
9、 WORKDIR 地址: 指定工作目录,若不存在自动创建,可作用与RUN CMD ENTRYPOINT
9、 Docker仓库
A、 registry:官方私有镜像仓库
B、 docker hub:公共镜像仓库
C、 harbor:企业级镜像仓库(推荐使用)
去github下载,解压、配置登录地址、用户名密码、安装。
用户使用时去docker配置文件把该地址添加进去,然后登录,就可以推送、拉取镜像
10、docker-compose(容器编排)
A、 version:”3.8” docker-compose版本,与docker版本对应
B、 services: 要部署的服务,下面可以定义多个服务,下面第一级是服务名称
C、 image:使用指定镜像构建
D、 build:指定dockerfile所在文件夹的路径(可以是绝对路径,或者相对docker-compose.yml文件的路径)
E、 command:可以覆盖,容器启动后默认执行的命令,和dockerfile里的CMD类似
F、 depend_on:必须在某些服务部署完之后
G、 expose:暴露端口,但不映射到宿主机,只被连接的服务访问
H、 ports:映射端口信息 宿主机端口:容器端口,或者仅仅指定容器端口,宿主机将会随机选择端口
I、 extra_hosts:指定额外的host名称映射信息。会在启动后的服务容器中/etc/hosts文件中添加host映射信息
J、 alias:网络上此服务的别名
K、 docker-compose up:默认读取名为docker-compose.yml的文件,-f 指定其他文件名,-d 让应用后台启动
L、 docker-compose stop:停止compose应用相关的所有容器,但不会删除它们
M、 docker-compose rm:删除已停止的应用,会删除容器和网络,但不回删除数据卷和镜像
N、 docker-compose restart:重启,如果用户在停止应用后对其修改,那么修改的内容不会反映在重启后的应用中,需要重新部署应用才能生效
O、 docker-compose down:停止并删除运行中的compose应用,会删除容器和网络,但不回删除数据卷和镜像
11、docker swarm
A、 Swarm是Docker的一个编排工具,在之前我们只是在一台机器来进行docker的管理,但是有时容器并不一定都在一台主机上,如果是分布式的处于多台主机上,这时就可以借助于Swarm
B、 Manager节点:manager节点相当于对服务的创建和调度
初始化集群并创建一个manager节点:docker swarm init --advertise-addr=manager节点ip
C、 Worker节点:主要是运行容器服务,manager节点也是可以运行的容器的
该命令manager节点创建成功时会给(docker swarm join --token token值 192.168.0.108:2377)
D、docker service create –name 服务名 使用的镜像
创建一个服务,该服务可能有多个副本(多个副本组成集群),
E、 docker service scale demo=5
对demo服务进行扩容(新增副本)
F、 Docker stack:使用docker-compose.yml文件来部署服务,文件内可以有多个服务,每个服务可以有多个副本(创建的容器分布在不同机器上)
docker stack deploy 服务名称 --compose-file=docker-compose.yml