Docker安裝
#添加阿裡雲的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
Docker配置
修改啟動檔案,監聽遠端端口
#修改,開啟遠端管理端口(注意:外網要限制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
Docker鏡像加速器
使用阿裡雲鏡像加速器提升擷取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
Docker鏡像倉庫
選擇一:阿裡雲ACR
位址:https://www.aliyun.com/product/acr
#登入倉庫
sudo docker login --username=使用者名 registry.cn-shanghai.aliyuncs.com
#按提示輸入使用者名密碼登入
#pull / tag / push
選擇二:使用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
選擇三: 使用Harbor自建Docker倉庫
參考:
Harbor倉庫介紹與搭建過程
Harbor1.5.0倉庫使用教程
Docker常用操作
鏡像 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
DockerFile
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 内容
<?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>
Docker容器編排
使用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 :詳見後續步驟
#進入檔案目錄
#啟動
docker-compose up
#背景啟動:
docker-compose up -d
#停止:
docker-compose stop
使用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。移除操作執行前并不會進行二次确認。
Compose 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
Docker容器叢集
參考: Kubernetes vs. Docker Swarm:完整的比較指南
Docker 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 中删除某服務。該指令會在不做确認的情況下删除服務的所有副本,是以使用時應保持警惕。
Kubernetes
全局參考
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

鵬願科技
|
企業家
企業頭條
資本商學院
商業百科