我们知道容器是一个打包了应用和相关依赖的盒子,那怎么去操控这个盒子呢? 这一篇我通过一个简单的aspnetcore程序来加深对盒子的理解,使用之前先
安装一下Docker的环境。
一:Docker的安装
官方下载地址:https://docs.docker.com/install/linux/docker-ce/centos/ ,跟着文档执行完下面2个大步骤即可。
1. SET UP THE REPOSITORY
sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
2. INSTALL DOCKER CE
sudo yum install docker-ce docker-ce-cli containerd.io
3. 启动docker 服务
[root@localhost ~]# service docker start Redirecting to /bin/systemctl start docker.service
4. 查看docker版本
[root@localhost ~]# docker -v Docker version 18.09.2, build 6247962
二:新建asp.net core 网站
docker已经有了,接下来新建一个website,采用vs默认的mvc模板即可,有了网站之后新建一个Dockerfile文件,内容如下,目的就是为了制作镜像,
关于dockerfile的更多内容我会放到后面的文章中去说,本篇关注点在容器上。
FROM microsoft/dotnet:2.2-aspnetcore-runtime LABEL hxc@qq.com RUN mkdir /data COPY ./ /data WORKDIR /data EXPOSE 80 CMD [ "dotnet","WebNotebook.dll" ]
然后点击vs的发布功能,把发布后的内容通过ftp push 到虚拟机中/data/publish文件夹下,具体内容如下:
[root@localhost publish]# ls appsettings.Development.json web.config WebNotebook.pdb WebNotebook.Views.pdb appsettings.json WebNotebook.deps.json WebNotebook.runtimeconfig.json wwwroot Dockerfile WebNotebook.dll WebNotebook.Views.dll [root@localhost publish]#
接下来通过 docker build 的方式构建出webnotebook的镜像。
[root@localhost publish]# docker build -f ./Dockerfile -t huangxincheng/webnodebook:v1 . Sending build context to Docker daemon 4.201MB Step 1/7 : FROM microsoft/dotnet:2.2-aspnetcore-runtime 2.2-aspnetcore-runtime: Pulling from microsoft/dotnet 6ae821421a7d: Already exists 8a3a416e6dac: Already exists ed82f21723d8: Already exists 4f77997e649d: Already exists Digest: sha256:988829fbff8cde8b431d045d2dd2e3ea54d69abf5c61c69794c523535ce382e7 Status: Downloaded newer image for microsoft/dotnet:2.2-aspnetcore-runtime ---> dad26d192ae6 Step 2/7 : MAINTAINER hxc@qq.com ---> Running in 89b9a2c5bec6 Removing intermediate container 89b9a2c5bec6 ---> 2d6c5ecba6d2 Step 3/7 : RUN mkdir /data ---> Running in 08e8d316c3da Removing intermediate container 08e8d316c3da ---> 7d28be2a2bc1 Step 4/7 : COPY ./ /data ---> 9f603790a8a2 Step 5/7 : WORKDIR /data ---> Running in 85fbed40b4f7 Removing intermediate container 85fbed40b4f7 ---> 8c18eaadc85b Step 6/7 : EXPOSE 80 ---> Running in 0eaa5046ee1d Removing intermediate container 0eaa5046ee1d ---> 9b6ee99c1875 Step 7/7 : CMD [ "dotnet","WebNotebook.dll" ] ---> Running in 7c0d2fa1eb46 Removing intermediate container 7c0d2fa1eb46 ---> 513950255443 Successfully built 513950255443 Successfully tagged huangxincheng/webnodebook:v1
最后可以通过 docker images 查看一下镜像是否构建成功,从下图中可以看到,当前有一个我的应用镜像,还有一个runtime镜像。
[root@localhost publish]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE huangxincheng/webnodebook v1 513950255443 38 seconds ago 264MB microsoft/dotnet 2.2-aspnetcore-runtime dad26d192ae6 4 days ago 260MB
三:容器操作
1. 启动容器
通常启动容器的方式有两种,第一种为docker create, 还有一种是docker