学习Docker的记录
一、下载 Docker for Windows 安装教程
参考文档一步一步的来学习文档1文档2
二、Docker的常用命令介绍
docker run -it --rm -p 8080:80 --name aspnetcor_sample1 microsoft/dotnet-samples:aspnetapp (运行一个容器)
-it 进入bash
-d 不进入bash
--rm 容器stop(容器停止)后自动删除容器
-p 指映射端口
--name 运行的容器名
Ctrl+P+Q 关闭bash不关闭容器
docker pull 拉取镜像
docker images 查看所有镜像
docker rmi 删除镜像
docker ps -a 查看所有运行容器
docker run 创建一个新的容器
docker rm 删除容器
docker start 运行容器
docker stop 停止容器
docker ps 查看运行容器
docker ps -a 查看所有运行容器
docker rm $(docker ps -aq) 删除所有容器
docker stop $(docker ps -aq) 停止所有容器
三.SWARM 集群搭建
docker swarm init --advertise-addr 192.168.0.201:2377 --listen-addr 192.168.0.201:2377 leader节点(只能是内网)
--advertise-addr 是添加这个节点到swarm
--listen-addr 是节点监听地址
docker swarm join-token manager 是查看manager的token
docker swarm join-token worker 是查看worker的token
解散集群
排空节点上的集群容器
docker node update --availability drain node_id
主动离开集群,让节点处于down状态,才能删除
docker swarm leave
删除指定节点 (管理节点上操作)
docker node rm node_id
管理节点,解散集群
docker swarm leave --force
docker node ls
四.Docker 网络文档
docker network create -d overlay network_core //这是创建一个overlay网络network_core,-d 为指定driver为overlay(集群管理节点才能用哦)
docker的网络模式大致可以分成五种类型:
bridge:默认是bridge模式网络 使用–net =bridge指定,默认网络驱动程序。当你的应用程序在需要通信的独立容器中运行时,通常会使用桥接网络。
host:host模式网络 使用–net =host指定,对于独立容器,删除容器和Docker主机之间的网络隔离,并直接使用主机的网络
none:none模式网络 使用–net =none指定,对于此容器,禁用所有网络
container:container模式网络 使用–net =container:指定容器名,可以多个容器共用一个网络
user-defined模式网络:
overlay:使用--net=overlay,覆盖网络将多个Docker守护程序连接在一起,并使群集服务能够相互通信。
还可以使用覆盖网络来促进群集服务和独立容器之间的通信,或者在不同Docker守护程序上的两个独立容器之间进行通信
macvlan:Macvlan网络允许您为容器分配MAC地址,使其显示为网络上的物理设备。Docker守护程序通过其MAC地址将流量路由到容器。
macvlan 在处理期望直接连接到物理网络的传统应用程序时,使用驱动程序有时是最佳选择,而不是通过Docker主机的网络堆叠进行路由
docker network disconnect 网络 容器 //移除容器网络
docker network connect 网络 容器 //为容器重新指定网络
docker restart 容器 //重启容器
五. SERVICE 创建
docker service create --name aspservices -p 10086:80 --network network_core --replicas 5 microsoft/dotnet-samples:aspnetapp(部署service必须创建overlay的network)
docker service create --name aspservices -p 10086:80 --replicas 5 microsoft/dotnet-samples:aspnetapp(不指定网络,会自动创建overlay)
create 创建
--replicas 复制品
--network 添加网络
docker service ls 查看所有服务
docker service ps [服务名] 查看服务下的服务
六. STACK 使用 创建一个docker-compose.yml文件 语法文档
version: "3.7"
services:
aspnetcor_sample1:
image: microsoft/dotnet-samples:aspnetapp
ports:
- "8080:80"
networks:
- overlay
deploy:
mode: replicated
replicas: 5
endpoint_mode: vip
volumes:
db-data:
networks:
overlay:
docker stack deploy -c docker-compose.yml mystack (创建stack)
七. Dockesfile生成镜像 文档
FROM :设置镜像源
WORKDIR:配置工作目录
COPY . . :复制发布后的bll文件到app目录下
EXPOSE 8001 :这里的意思是开放容器内的8001端口,并不是代码用这个端口
ENV :配置系统环境变量,比如程序环境环境等在这里配置(开发、预发、线上环境)
ENV ASPNETCORE_URLS :这里是配置程序运行端口 如果程序不使用默认的80端口这里一定要设置(程序运行端口)
ENTRYPOINT:启动入口
对应.netcore应用程序,设置 ASPNETCORE_ENVIRONMENT 环境变量为自定义的值,就会寻找对应的配置文件,默认不设置会加载appsettings.json
Docker run -e "ASPNETCORE_ENVIRONMENT=development" myimage
docker build -t mycore:v1.0 . Dockerfile (构建镜像)