Docker

1|0Docker安装


复制代码
#添加阿里云的yum源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker ce
yum install docker-ce -y

#阿里云的centos 8 安装docker 时提示:
#package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
#则先安装containerd
dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

#查看docker版本
docker -v
复制代码

 

2|0Docker配置


修改启动文件,监听远程端口

复制代码
#修改,开启远程管理端口(注意:外网要限制2375端口)
vim /usr/lib/systemd/system/docker.service
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://10.6.66.236:2375
安全参考:https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
#重启 
systemctl daemon
-reload
systemctl enable docker.service
systemctl restart docker.service

#查看docker info
docker info
复制代码

 

3|0Docker镜像加速器


使用阿里云镜像加速器提升获取Docker官方镜像的速度

复制代码
#创建目录  -p 不存在就创建  
sudo
mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://rrn1rf2c.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
复制代码

 

4|0Docker镜像仓库


4|1选择一:阿里云ACR


地址:https://www.aliyun.com/product/acr 

#登录仓库
sudo docker login --username=用户名 registry.cn-shanghai.aliyuncs.com
#按提示输入用户名密码登录

#pull / tag / push

4|2选择二:使用Registry自建Docker仓库


复制代码
#安装加密工具
yum install httpd-tools  -y

#设置认证密码   用户名 fmp  密码 123456
mkdir /opt/registry-var/auth/ -p
htpasswd  -Bbn fmp 123456  > /opt/registry-var/auth/htpasswd

#启动容器,在启动时传入认证参数
docker run -d -p 5000:5000 --restart=always -v /opt/registry-var/auth/:/auth/ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd registry

#修改配置文件,使之支持http ,否则登录的时候会报错
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["10.6.66.229:5000"]
}
#重启docker
systemctl restart docker.service

#登录,输入用户名密码
docker login 10.6.66.229:5000

#http访问:http://10.6.66.229:5000/v2/_catalog
复制代码

4|3选择三: 使用Harbor自建Docker仓库


参考:

Harbor仓库介绍与搭建过程

Harbor1.5.0仓库使用教程

 

5|0Docker常用操作


镜像 pull/tag/push  容器 run    /*实际应用,更多使用dockerfile进行配置运行*/

复制代码
#search
docker search nginx
#pull
docker pull nginx
#tag(注意最后一个参数,要和仓库路径一致:仓库地址/命名空间/仓库名称:镜像版本号)
docker tag nginx  10.6.66.229:5000/fmp/mynginx:1.0
#push
docker push 10.6.66.229:5000/fmp/mynginx:1.0

#run -d 后台运行  -p  端口映射
docker run -d -p 80:80 nginx 
#run 启动并进入容器  -it 交互式
docker run -it nginx:latest  /bin/bash
#run 启动,并挂载卷
docker run -d -p 80:80 -v /data:/usr/share/nginx/html nginx:latest
#run 自动启动
docker run  --restart=always 

#删除所有停止的容器
docker container prune

#如果run的时候,忘记加某个参数了,可以使用docker update命令
docker update redis --restart=always
#将容器提交为新的容器
docker commit -a "fmp" -m "mynginx" a404c6c174a2 mynginx:v1
#查看容器详细信息
docker container inspect 容器名称/id

#容器重命名
docker rename 原容器名  新容器名

#查看容器日志
docker logs id
#进入容器
docker exec -it nginx /bin/bash
#退出容器,回到宿主机
ctrl+p & ctrl+q
复制代码

 

6|0DockerFile


VS->项目上右键点击->添加-Docker支持

复制代码
#Runtime
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base WORKDIR /app EXPOSE 80
#使用SDK编译项目 FROM mcr.microsoft.com
/dotnet/core/sdk:2.2-stretch AS build WORKDIR /src COPY ["xplan/xplan.csproj", "xplan/"] RUN dotnet restore "xplan/xplan.csproj" COPY . . WORKDIR "/src/xplan" RUN dotnet build "xplan.csproj" -c Release -o /app #发布 FROM build AS publish RUN dotnet publish "xplan.csproj" -c Release -o /app
#运行 FROM base AS final WORKDIR
/app COPY --from=publish /app . ENTRYPOINT ["dotnet", "xplan.dll"]
复制代码

 参考:ASP.NET Core 2.1 使用Docker运行

加速镜像构建的技巧

将本项目的DLL和第三方的DLL,分别使用多行COPY命令;

原理:docker 客户端会把上下文中的所有文件发送给 docker daemon,分多个命令,没有变化的文件,会使用上一次build的缓存

参考:https://www.cnblogs.com/sparkdev/p/9573248.html

dotnet restore 还原包的速度很慢,可以给dotnet restore 命令加上 :--configfile NuGet.Config

指定nuget 为 azure的cdn源

nuget.config 内容

1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://nuget.cdn.azure.cn/v3/index.json" protocolVersion="3" />
  </packageSources>
</configuration>

  

 

 

7|0Docker容器编排


7|1使用docker-compose编排容器


参考:

Docker-compose命令详解

Docker系列之(五):使用Docker Compose编排容器 

复制代码
#安装
curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version

#编写
docker-compose.yml :详见后续步骤
  
#进入文件目录
1
2
3
4
5
#启动
docker-compose up
 
#后台启动:
docker-compose up -d  #停止:docker-compose stop 
复制代码

7|2使用docker stack编排容器(推荐)


Docker Compose和Docker Stack区别

docker stack 官方文档

Docker Stack 和 Docker Compose 的一个区别是,Stack 不支持构建。这意味着在部署 Stack 之前,所有镜像必须提前构建完成。

Docker Stack实践

Docker Stack命令

1) docker stsack deploy
用于根据 Stack 文件(通常是 docker-stack.yml)部署和更新 Stack 服务的命令。
2) docker stack ls
会列出 Swarm 集群中的全部 Stack,包括每个 Stack 拥有多少服务。
3) docker stack ps
列出某个已经部署的 Stack 相关详情。该命令支持 Stack 名称作为其主要参数,列举了服务副本在节点的分布情况,以及期望状态和当前状态。
4) docker stack rm
命令用于从 Swarm 集群中移除 Stack。移除操作执行前并不会进行二次确认。

 

7|3Compose file


Compose file 官方文档

 

 

 

使用Compose file,创建一个wordpress引用

复制代码
#创建文件目录
mkdir /opt/my_wordpress/
cd /opt/my_wordpress/

#编写编排文件
vim docker-compose.yml
version: '2'
services:
   db:
     image: mysql:5.7
     volumes:
       - /data/db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - /data/web_data:/var/www/html
     ports: 
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress 
复制代码

 浏览:http://ip:8000 

 

8|0Docker容器集群


 参考: Kubernetes vs. Docker Swarm:完整的比较指南

 

8|1Docker Swarm


 

Docker Swarm常用命令

docker swarm init   用于创建一个新的 Swarm。执行该命令的节点会成为第一个管理节点,并且会切换到 Swarm 模式。
docker swarm join-token
  用于查询加入管理节点和工作节点到现有 Swarm 时所使用的命令和 Token。
  要获取新增管理节点的命令,请执行 docker swarm join-token manager 命令;
  要获取新增工作节点的命令,请执行 docker swarm join-token worker 命令。
docker node ls   用于列出 Swarm 中的所有节点及相关信息,包括哪些是管理节点、哪个是主管理节点。
docker service create   用于创建一个新服务。
docker service ls   用于列出 Swarm 中运行的服务,以及诸如服务状态、服务副本等基本信息。
docker service ps <service>   该命令会给出更多关于某个服务副本的信息
docker service inspect   用于获取关于服务的详尽信息。附加 --pretty 参数可限制仅显示重要信息。
docker service scale   用于对服务副本个数进行增减。
docker service update   用于对运行中的服务的属性进行变更。
docker service logs   用于查看服务的日志。
docker service rm   用于从 Swarm 中删除某服务。该命令会在不做确认的情况下删除服务的所有副本,所以使用时应保持警惕。



8|1Kubernetes



 

 

 

 

全局参考

Docker 容器入门

Docker教程:Docker入门实践(精讲版)

Docker — 从入门到实践

 

docker安装mysql挂在数据卷至宿主机 

#在宿主机上创建数据目录
mkdir /my/mysql/data

#运行mysql容器
sudo docker run --name mysqldb --restart=always  -d -v /my/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Pwd@159357 -p 3306:3306 mysql

 

 

 

 


__EOF__

作  者码农搞事情
出  处https://www.cnblogs.com/fmp/p/11463319.html
关于博主:一本正经写程序&不务正业搞事情
版权声明:欢迎分享,转载请注明出处。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

posted @   码农搞事情  阅读(367)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
0
0
关注
跳至底部
点击右上角即可分享
微信分享提示