iT邦幫忙

0

Docker基礎功能教學

#Docker Install

  • 安裝下載相關套件
    • sudo apt-get update
    • sudo apt-get install
      apt-transport-https
      ca-certificates
      curl
      gnupg-agent
      software-properties-common
  • 加入Docker GPG key
  • 加入Docker資料庫
  • 安裝Docker Engine
    • sudo apt-get update
    • sudo apt-get install docker-ce docker-ce-cli containerd.io
  • 測試Docker安裝是否成功
    • sudo docker run hello-world
  • 安裝特定版本Docker Engine
    • apt-cache madison docker-ce (列出版本資訊)
    • sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

#Docker Run [Option] 用法

  • Sudo docker run [Option] [Image] [Command] [Arg] (Ex : Sudo docker run --rm -d alpine sleep 10) (Ex : Sudo docker run -it alpine /bin/sh)
  • Option
    • -d 將Container跑在背景 (不會卡死terminal)
    • -e 設置環境參數
    • -i 保持STDIN開啟
    • -t 開啟pseudo-TTY (通常-it連用)
    • --name 給Container一個別名
    • --p 將Container中的Port對應到本機的Port
    • --rm 在Container停止後自動刪除
    • -v 將Container內的資料夾與本機的資料夾做映射!

#Docker 基本指令

  • sudo docker ps –a : 列出目前產生的Container
  • sudo docker images : 列出目前有的Images檔案
  • sudo docker rm [Container ID] : 刪除特定Container!
  • sudo docker rmi [Images ID] : 刪除特定映像檔
  • sudo docker run [Images] : 建立Container
  • sudo docker exec [Container ID] : 傳送指令給正在運行的Container
  • sudo docker inspect [Container ID] : 列出容易的相關設定參數
  • Sudo docker start [Container ID] : 重新啟動Container
  • Sudo docker stop [Container ID] : 停止Container運行

#Docker Container特性

https://ithelp.ithome.com.tw/upload/images/20210705/20139199D1nHwsWlpp.jpg

#自製Docker Images

https://ithelp.ithome.com.tw/upload/images/20210705/20139199WqxJK86RmR.jpg

  • Dockerfile內容如下
FROM alpine:3.10.1

RUN apk update && apk upgrade && apk add --no-cache nano sudo wget curl \
tree elinks bash shadow procps util-linux coreutils binutils findutils grep && \
wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64 && \
chmod +x busybox-x86_64 && mv busybox-x86_64 bin/busybox1.28

CMD ["/bin/bash"]

#自製可由SSH連入的Docker Container

https://ithelp.ithome.com.tw/upload/images/20210705/201391997SZ6eSEDzP.jpg

  • Dockerfile內容如下
FROM alpine.base
RUN apk update && apk upgrade && apk add --no-cache openssh openrc && rc-update add sshd && \  
    # 設定 OpenSSH
    mkdir /run/openrc && touch /run/openrc/softlevel && rc-status &>/dev/null && \
    # 建立 sshup
    echo '#!/bin/bash' > /usr/bin/sshup && echo -e 'Welcome to Alpine 3.10.1\n' > /etc/motd && \ 
    echo '/etc/init.d/sshd start &>/dev/null && tail -f /dev/null' >> /usr/bin/sshup && chmod +x /usr/bin/sshup && \
    # 建立管理者帳號
adduser -s /bin/bash -h /home/user -G wheel -D user && echo '%wheel ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers && \
    echo -e "userd\nuser\n" | passwd user &>/dev/null && [ "$?" == "0" ] && echo “Add user ok!"

ENTRYPOINT ["/usr/bin/sshup"]

#Docker 橋接網路架構圖

https://ithelp.ithome.com.tw/upload/images/20210705/201391994Lf9JBY8wz.jpg

#Docker 建立新的橋接器

https://ithelp.ithome.com.tw/upload/images/20210705/20139199vMFtNgYNLi.jpg

#Docker中共用資料夾

https://ithelp.ithome.com.tw/upload/images/20210705/20139199mEm0Ox8cCw.jpg

#Docker建立資料庫測試

https://ithelp.ithome.com.tw/upload/images/20210705/20139199nksRnX09nE.jpg

#在Ubuntu運行C#

  • 註冊Microsoft Key and Reposity
  • 下載安裝dotnet-sdk
    • sudo add-apt-repository universe
    • sudo apt-get update
    • sudo apt-get install apt-transport-https
    • sudo apt-get update
    • sudo apt-get install dotnet-sdk-3.1
  • 測試
    • 查詢可建立專案類型 : dotnet new --list
    • 建立新專案 : dotnet new [專案類型] –o [ProjectName] (EX : dotnet new console –o test )
    • 運行專案 : dotnet run [.csproj File] (EX : dotnet run ./test.csproj )

#在將C# Code包裝為Docker Image

https://ithelp.ithome.com.tw/upload/images/20210705/20139199qyf8AKzzXu.jpg

  • Dockerfile內容如下
# https://hub.docker.com/_/microsoft-dotnet-core
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.csproj .
RUN dotnet restore

# copy and publish app and libraries
COPY . .
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/core/runtime:3.1
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "dotnet.dll"]

尚未有邦友留言

立即登入留言