WIN10下VM虚拟机Docker服务(ASP.NET CORE Web Application)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/s261676224/article/details/82748116

Boring Docker

(2018.09.17如果序列1-4环境OK,直接5起飞~~~)

1.vm虚拟机安装ubuntu 16 server版本(我这里用的是16)

Vmware + ubuntu1604_64_server.iso->...

2.阿里源

#备份原来的源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bakcup

#编辑原来的文件

sudo vim /etc/apt/sources.list

#阿里源

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

 

3.docker安装

# step 1: 安装必要的一些系统工具

sudo apt-get update

sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

# step 2: 安装GPG证书

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# Step 3: 写入软件源信息

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# Step 4: 更新并安装 Docker-CE

sudo apt-get -y update

sudo apt-get -y install docker-ce

# Step 5: 启动docker服务

sudo service docker start

#Step 6:测试是否安装成功

sudo docker run hello-world

#Step 7:查看docker版本

sudo docker version

 

#############################################################################################

PS:如安装docker-ce时候提示依赖包:libsystemd-journal0

  deb http://cz.archive.ubuntu.com/ubuntu trusty main 写入/etc/apt/sources.list 文件中

再执行 sudo apt-get update, sudo apt-get install libsystemd-journal0

 

4.辅助上传/下载(这里我用是Xshell链接虚拟机ubuntu)

sudo apt-get install lrzsz

 

5.新建一个ASP.NET CORE 应用

Vs2017->ASP.NET Core Web 应用程序->api->...

 

6.创建Dockerfile

https://docs.docker.com/engine/examples/dotnetcore/#why-build-aspnet-core

在我的项目如下图(Dockerfile我这里是放到解决方案下的项目目录中

Dockerfile如下图

 

 

 

Dockerfile代码片段

FROM microsoft/dotnet:sdk AS build-env

WORKDIR /app

 

# Copy csproj and restore as distinct layers

COPY *.csproj ./

RUN dotnet restore

 

# Copy everything else and build

COPY . ./

RUN dotnet publish -c Release -o out

 

# Build runtime image

FROM microsoft/dotnet:aspnetcore-runtime

WORKDIR /app

COPY --from=build-env /app/out .

ENTRYPOINT ["dotnet", "WebApplication1.dll"]

 

7.Dockerfile到虚拟机(如图)

Rz->[win框]选择你的项目文件(所有文件包括Dockerfile)->...

 

8.Bulid(如图)

sudo docker bulid –t aspnetcore .

...1s ....1m ... 1h ...1d ... 1m ...1y

哈哈结束啦。。。

 

 

 

 

 

 

 

9.run Docker image(运行如图)

docker run -d -p 8080:80 --name myapp aspnetcore

辅助指令 docker ps –a 查看,其中hello-world是安装docker测试容器

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分析一下,很有趣

Windows主机 IP:192.168.1.105

Linux 虚拟机  IP: 192.168.1.102

Docker容器  IP:172.17.0.1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

附录A

Docker的镜像称为image,容器称为container。

 

对于Docker来说,image是静态的,类似于操作系统快照,而container则是动态的,是image的运行实例。

 

比如,有一个image名称为ubuntu,那么比如现在我们启动这个image的container并且进入到这个container的bash命令行中:

 

docker run -t -i ubuntu /bin/bash

 

官网是这么说的:

 

docker run: runs a container.

ubuntu: is the image you would like to run.

-t: flag assigns a pseudo-tty or terminal inside the new container.

-i: flag allows you to make an interactive connection by grabbing the standard in (STDIN) of the container.

/bin/bash: launches a Bash shell inside our container.

理解很简单:

 

docker run:启动container

 

ubuntu:你想要启动的image

 

-t:进入终端

 

-i:获得一个交互式的连接,通过获取container的输入

 

/bin/bash:在container中启动一个bash shell

 

 

########################################################################

 

docker start :启动一个或多少已经被停止的容器

 

docker stop :停止一个运行中的容器

 

docker restart :重启容器

 

语法

docker start [OPTIONS] CONTAINER [CONTAINER...]

docker stop [OPTIONS] CONTAINER [CONTAINER...]

docker restart [OPTIONS] CONTAINER [CONTAINER...]

实例

启动已被停止的容器myrunoob

 

docker start myrunoob

停止运行中的容器myrunoob

 

docker stop myrunoob

重启容器myrunoob

 

docker restart myrunoob

 

########################################################################

 

docker run :创建一个新的容器并运行一个命令

 

语法

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

 

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

 

-d: 后台运行容器,并返回容器ID;

 

-i: 以交互模式运行容器,通常与 -t 同时使用;

 

-p: 端口映射,格式为:主机(宿主)端口:容器端口

 

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

 

--name="nginx-lb": 为容器指定一个名称;

 

--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

 

--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

 

-h "mars": 指定容器的hostname;

 

-e username="ritchie": 设置环境变量;

 

--env-file=[]: 从指定文件读入环境变量;

 

--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

 

-m :设置容器使用内存最大值;

 

--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

 

--link=[]: 添加链接到另一个容器;

 

--expose=[]: 开放一个端口或一组端口;

 

实例

使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。

 

docker run --name mynginx -d nginx:latest

使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。

 

docker run -P -d nginx:latest

使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。

 

docker run -p 80:80 -v /data:/data -d nginx:latest

绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。

 

$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

 

########################################################################

 

docker rm :删除一个或多少容器

 

语法

docker rm [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明:

 

-f :通过SIGKILL信号强制删除一个运行中的容器

 

-l :移除容器间的网络连接,而非容器本身

 

-v :-v 删除与容器关联的卷

 

实例

强制删除容器db01、db02

 

docker rm -f db01 db02

移除容器nginx01对容器db01的连接,连接名db

 

docker rm -l db

删除容器nginx01,并删除容器挂载的数据卷

 

docker rm -v nginx01

 

附录B

 

通过 docker logs 命令来查看应用的信息。

sudo docker logs -f nostalgic_morse


使用 docker port 来查看当前映射的端口配置,也可以查看到绑定的地址

docker port nostalgic_morse 5000

$ docker ps // 查看所有正在运行容器

$ docker stop containerId // containerId 是容器的ID

 

$ docker ps -a // 查看所有容器

$ docker ps -a -q // 查看所有容器ID

 

$ docker stop $(docker ps -a -q) //  stop停止所有容器

$ docker  rm $(docker ps -a -q) //   remove删除所有容器

猜你喜欢

转载自blog.csdn.net/s261676224/article/details/82748116