#Docker Install
安装下载相关套件sudo apt-get updatesudo apt-get installapt-transport-https
ca-certificates
curl
gnupg-agent
software-properties-common加入Docker GPG keycurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –加入Docker资料库sudo add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable“安装Docker Enginesudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io测试Docker安装是否成功sudo docker run hello-world安装特定版本Docker Engineapt-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 : 列出目前产生的Containersudo docker images : 列出目前有的Images档案sudo docker rm [Container ID] : 删除特定Container!sudo docker rmi [Images ID] : 删除特定映像档sudo docker run [Images] : 建立Containersudo docker exec [Container ID] : 传送指令给正在运行的Containersudo docker inspect [Container ID] : 列出容易的相关设定参数Sudo docker start [Container ID] : 重新启动ContainerSudo docker stop [Container ID] : 停止Container运行#Docker Container特性
#自製Docker Images
FROM alpine:3.10.1RUN 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.28CMD ["/bin/bash"]
#自製可由SSH连入的Docker Container
FROM alpine.baseRUN 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 桥接网路架构图
#Docker 建立新的桥接器
#Docker中共用资料夹
#Docker建立资料库测试
#在Ubuntu运行C#
注册Microsoft Key and Repositywget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O - - packages-microsoft-prod.debsudo dpkg -i packages-microsoft-prod.deb下载安装dotnet-sdksudo add-apt-repository universesudo apt-get updatesudo apt-get install apt-transport-httpssudo apt-get updatesudo 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://hub.docker.com/_/microsoft-dotnet-coreFROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS buildWORKDIR /source# copy csproj and restore as distinct layersCOPY *.csproj .RUN dotnet restore# copy and publish app and librariesCOPY . .RUN dotnet publish -c release -o /app --no-restore# final stage/imageFROM mcr.microsoft.com/dotnet/core/runtime:3.1WORKDIR /appCOPY --from=build /app .ENTRYPOINT ["dotnet", "dotnet.dll"]