作为一个 dotnetcore 程序员,我常用的 docker 操作

        相对于Windows部署,Docker 部署简单、快速。我负责的项目,最频繁时一天要部署十几次。而且,用户基本感受不到站点更新的,因为不到 1 秒就更新完毕了。
        那我来分享一下平时常用的 Docker 操作,希望对于刚入坑的童鞋有所帮助,老手请忽略本文。
一,安装 Docker。
        现在我拿到了一台 CentOS 7的机器,第一步就是安装 Docker。
        使用 root 帐号,执行如下命令:
yum install docker-ce
        什么?提示没找到包?那先添加 yum 源:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
        再执行
yum install docker-ce
        不出意外的话,docker 就安装成功了,如果不成功,检查下 CentOS 版本,6的话或者更低的话,尽量升到7吧。
        安装成功后要启动:
systemctl start docker
        还要设置重启后自动启动:
systemctl enable docker
        好,安装基本完成了。
二,跑一个 dotnetcore 项目。
        假设我现在有一个 dotnetcore 项目叫 MyDemo.WebApi ,是Aspnetcore 2.2 的标准 WebApi 模板项目,没写一句代码,已经发布好了,发布后的文件如下:

作为一个 dotnetcore 程序员,我常用的 docker 操作_第1张图片

       在此文件夹下建一个文本文件,输入以下内容:

FROM microsoft/dotnet:2.2-aspnetcore-runtime
WORKDIR /app
COPY . ./
ENTRYPOINT ["dotnet", "MyDemo.WebApi.dll"]

        保存,把这个文件重命名为 Dockerfile 注意,没有扩展名,把 txt 扩展名去掉。如果不会去掉,请学好基本电脑操作再来做研发。这个文件的内容是告诉 Docker ,我的项目是基于微软aspnetcore2.2的运行时的,入口的命令是

dotnet MyDemo.WebApi.dll
现在的文件夹是这样:

作为一个 dotnetcore 程序员,我常用的 docker 操作_第2张图片

选中这8个文件,用Winrar 打个包,注意要 zip 包哦,

作为一个 dotnetcore 程序员,我常用的 docker 操作_第3张图片

        把打好的包,传到装好 Docker 的 linux 机器上。方法有 ftp、rz 等,实在不行,可以本地 windows 跑个站点,把 zip 包放在里面,到 linux 上 wget 下载一下。
例如我放在了linux 上的 /data/MyDemo/v1 这里。
然后 cd /data/MyDemo/v1 到这个目录里,unzip publish.zip 解压一下。rm publish.zip 把压缩包删掉。
        重点来了,执行如下命令:
docker build -t mydemo:1 .
        注意最后那个点,是当前目录的意思,别丢了。这句话的意思是,嘿 Docker,把当前文件夹给我做个镜像,名字是 mydemo,版本是1 。然后可以用 docker images 查看一下本机的所有镜像。
        镜像有了,还需要容器跑起来。执行如下命令:
docker run -d -p 8080:80 mydemo:1
        然后这个容器就跑起来了,在其他机器上打开浏览器,打开 http://linux机器IP:8080/api/values 就能得到输出了。
在 linux 上输入 docker ps 也能看到这个容器在跑了。
docker run 命令还有其他的一些选项,如:
 --restart=always 这个参数能让容器遇到错误时总是重启
 -v /etc/localtime:/etc/localtime:ro  这个选项能让 docker 使用宿主的时区。 -v 这个命令还能映射宿主的目录或者文件给容器用。
docker ps 常用的参数是 -a 能显示所有状态的容器,不加 -a 只会显示正在跑的容器。
        那我们学到了 docker build 构建镜像、docker images 查看镜像、docker run 启动容器、docker ps 查看容器 四个命令,还有哪些命令是常用的呢:

三,其他常用 docker 命令
        docker restart  这个命令能让容器重启,比如跑了一个Nginx ,配置文件映射到宿主机上,修改了配置文件,就需要重启容器让配置生效。
        docker stop 这个命令能让容器停止。比如发布了一个新版本的 mydemo,就可以停止掉老版本的容器,启动一个新版本的容器,两个命令连起来,切换的就会很快。
        docker rm  这个命令能删除容器。停止掉的容器,docker ps -a 还会看到他的身影,使用本命令才能删掉。
        docker rmi 这个命令能删除镜像。老版本的镜像没用了,可以用这个命令删掉。
        docker pull 这个命令能从 docker hub 网站上拉取一个镜像到本地,让你部署 mysql mongodb consul apollo skywalking 这些应用变得分分钟跑起来。
        docker logs 查看容器的日志。
        docker inspect 查看容器卷信息,容器跑起来忘了映射了哪些目录?没错,就用这个命令可以查到。

这些就是我作为一个 dotnetcore 程序员经常用到的 Docker 操作,东西不多,简单易学。

你可能感兴趣的:(作为一个 dotnetcore 程序员,我常用的 docker 操作)