作为一个 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 模板项目,没写一句代码,已经发布好了,发布后的文件如下:

 

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

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

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

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

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

        把打好的包,传到装好 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 操作,东西不多,简单易学。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章