茶叶flash网站,辽宁建设工程质量监督站网站,中信建设有限责任公司 陈晓佳,比较厉害的网站制作公司本文主要内容#xff1a;Docker 镜像、容器 常用命令整理使用Docker常见命令#xff0c;搭建Consul集群通过创建自定义镜像#xff0c;把.NetCore Api运行在Docker中1.镜像、容器命令镜像序号命令描述1docker image build基于Dockerfile创建镜像2docker image history显示镜… 本文主要内容Docker 镜像、容器 常用命令整理使用Docker常见命令搭建Consul集群通过创建自定义镜像把.NetCore Api运行在Docker中1.镜像、容器命令镜像序号命令描述1docker image build基于Dockerfile创建镜像2docker image history显示镜像的历史记录主要因为镜像文件由多个层组成那么可以使用该命令知道各个层的内容具体是什么。3docker image importImport the contents from a tarball to create a filesystem image4docker image inspect显示镜像的详细信息5docker image load载入镜像可以使用该命令将导出的tar文件再导入本地镜像库6docker image ls列出本地主机上安装的所有镜像7docker image prune清理一些临时的镜像文件未被使用的。8docker image pull从registry中拉取镜像或存储库repository可以指定Tag(一般用来标识版本信息)默认会选择latest标签下载最新版本的镜像。9docker image push将镜像或存储库推送到注册表(registry)10docker image rm删除一个或多个镜像11docker image save存取镜像如果要导出镜像到本地文件可以使用该命令12docker image tag为本地镜像添加新的标签。容器序号命令描述01docker container attach进入容器02docker container commitCreate a new image from a container’s changes03docker container cp在容器和主机之间复制文件04docker container create创建容器状态是停止的需要使用start命令05docker container diff查看容器内文件系统的变更06docker container exec可以在运行中容器内执行命令07docker container export导出容器文件类型后缀tar08docker container inspect查看容器详情09docker container killKill one or more running containers10docker container logs查看容器输出记录12docker container ls列出所有容器13docker container pause暂停容器14docker container port查看端口映射15docker container pruneRemove all stopped containers16docker container renameRename a container17docker container restartRestart one or more containers18docker container rm删除一个或多个容器19docker container run运行一个容器等同于先create、在start命令20docker container start启动容器20docker container stats查看统计资源信息cpu内存存储网络等使用情况21docker container stop终止容器22docker container top查看容器内进程23docker container unpauseUnpause all processes within one or more containers24docker container update更新容器配置 比如启动方式--restartalways25docker container waitBlock until one or more containers stop, then print their exit codes2.使用Docker常见命令搭建Consul集群拉取consul镜像到本地docker pull consul
运行consul容器并且添加服务节点consul_node_1和consul管理界面 docker run -d -p 8500:8500 -v /data/consul:/consul/data -e CONSUL_BIND_INTERFACEeth0 --nameconsul_server_1 consul agent -server -bootstrap -ui -nodeconsul_node_1 -client0.0.0.0单机版的consul已经运行起来了下面搭建个consul集群查看consul_server_1容器的ip地址再添加2个服务节点组成集群docker inspect --format{{.NetworkSettings.IPAddress}} consul_server_1
添加consul_node_2节点 docker run -d -e CONSUL_BIND_INTERFACEeth0 --nameconsul_server_2 consul agent -server -nodeconsul_node_2 -join172.17.0.2
添加consul_node_3节点docker run -d -e CONSUL_BIND_INTERFACEeth0 --nameconsul_server_3 consul agent -server -nodeconsul_node_3 -join172.17.0.2
最后添加3个client 加入集群docker run -d -e CONSUL_BIND_INTERFACEeth0 --nameconsul_server_4 consul agent -client -nodeconsul_node_4 -join172.17.0.2 -client0.0.0.0docker run -d -e CONSUL_BIND_INTERFACEeth0 --nameconsul_server_5 consul agent -client -nodeconsul_node_5 -join172.17.0.2 -client0.0.0.0docker run -d -e CONSUL_BIND_INTERFACEeth0 --nameconsul_server_6 consul agent -client -nodeconsul_node_5 -join172.17.0.2 -client0.0.0.0
在浏览器输入localhost:8500查看集群信息client节点是不参与leader选举的使用如下命令查看 docker exec consul_server_1 consul operator raft list-peers
使用如下命令查看集群情况docker exec consul_server_1 consul membersconsul参数解释–nethost docker参数, 使得docker容器越过了net namespace的隔离免去手动指定端口映射的步骤-server consul支持以server或client的模式运行, server是服务发现模块的核心, client主要用于转发请求-advertise 将本机私有IP传递到consul-retry-join 指定要加入的consul节点地址失败后会重试, 可多次指定不同的地址-client 指定consul绑定在哪个client地址上这个地址可提供HTTP、DNS、RPC等服务默认是127.0.0.1-bind 绑定服务器的ip地址该地址用来在集群内部的通讯集群内的所有节点到地址必须是可达的默认是0.0.0.0allow_stale 设置为true则表明可从consul集群的任一server节点获取dns信息, false则表明每次请求都会经过consul的server leader-bootstrap-expect 数据中心中预期的服务器数。指定后Consul将等待指定数量的服务器可用然后启动群集。允许自动选举leader但不能与传统-bootstrap标志一起使用, 需要在server模式下运行。-data-dir 数据存放的位置用于持久化保存集群状态-node 群集中此节点的名称这在群集中必须是唯一的默认情况下是节点的主机名。-config-dir 指定配置文件当这个目录下有 .json 结尾的文件就会被加载详细可参考https://www.consul.io/docs/agent/options.html#configuration_files-enable-script-checks 检查服务是否处于活动状态类似开启心跳-datacenter 数据中心名称-ui 开启ui界面-join 指定ip, 加入到已有的集群中3.通过创建自定义镜像把.NetCore Api运行在Docker中生成Dockerfile文件本示例使用前几天分享的项目把AAStore.ProductCatalog.Api选中项目右键-添加-Docker支持,就会看到生产的Dockerfile文件#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 8081
EXPOSE 18081FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY [AAStore.ProductCatalog.Api/AAStore.ProductCatalog.Api.csproj, AAStore.ProductCatalog.Api/]
COPY [AAStore.ProductCatalog/AAStore.ProductCatalog.csproj, AAStore.ProductCatalog/]
COPY [AAStore.ProductCatalog.DataContracts/AAStore.ProductCatalog.DataContracts.csproj, AAStore.ProductCatalog.DataContracts/]
RUN dotnet restore AAStore.ProductCatalog.Api/AAStore.ProductCatalog.Api.csprojCOPY . .
WORKDIR /src/AAStore.ProductCatalog.Api
RUN dotnet build AAStore.ProductCatalog.Api.csproj -c Release -o /app/buildFROM build AS publish
RUN dotnet publish AAStore.ProductCatalog.Api.csproj -c Release -o /app/publishFROM base AS final
WORKDIR /app
COPY --frompublish /app/publish .
ENTRYPOINT [dotnet, AAStore.ProductCatalog.Api.dll]
构建镜像docker build -t aastore.productcatalog.api:dev -f F:/codelab/AAStore/AAStore.ProductCatalog.Api/Dockerfile .
镜像构建成功了可以使用docker image ls查看镜像运行容器docker run --name aastore.productcatalog.api.service.001 --restartalways -d -p 8081:8081 aastore.productcatalog.api:dev最后输入urlhttp://localhost:8081/api/product/get查看部署的是否成功 图参考https://docs.docker.com/engine/reference/commandline/image/https://docs.microsoft.com/zh-cn/visualstudio/containers/container-build?viewvs-2019Visual Studio 如何构建容器化应用