1.安装Docker
PS:先打开网络
yum [Errno 256] No more mirrors to try 解决方法
输入下面的命令即可解决问题:
yum clean all
yum makecache
(1)安装docker
sudo yum install
docker
PS:
遇报错 Another app is currentlty holding the yum lock ,waiting for it to exit..
解决方法: rm –r /var/run/yum.pid 这个命令 解锁即可
(2)启动docker
systemctl start docker.service
(3)配置开机启动
systemctl enable
docker.service
(4)查看docker版本信息
docker version
2.Asp.Net core项目建 Dockerfile 并发布
注意: Dockerfile 文件配置如下,并需要在发布的时候手动copy过去
Dockerfile文件内容:
#基于 `microsoft/aspnetcore:2.0` 来构建我们的镜像
FROM microsoft/aspnetcore:2.0
#拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中
COPY . /publish
#设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹
WORKDIR /publish
#设置Docker容器对外暴露80端口
EXPOSE 80
#使用`dotnet NetCoreDockerDemo.dll`来运行应用程序
ENTRYPOINT ["dotnet", "NetCoreDockerDemo.dll"]
(1) 生成镜像
cd 到linux 部署的一个core文件夹下
sudo docker build -t demo-netcore . (注意:最后空格后面有一个.)。
(2) 查看生成的镜像
sudo docker images
(3) 镜像备份
命令: docker save -o ~/xxxxxxxx.tar name(镜像名称)
新建一个dockerimages 文件夹来存放 待备份的 文件
[root@localhost Desktop]# docker save -o docker-domocore-bk.tar demo-netcore
(4) 把镜像文件导出到本地
用 FZ 文件连接 :sftp://192.168.174.129 root/jxl333
Root 根目录下就有 刚才备份的 docker-domocore-bk.tar 文件,下载到本机即可
3.docker镜像Copy另一台机器并加载
(1) 把镜像文件copy 到另外一台 linux 机器上,测试镜像可用性
备注:新的这台服务器上也要先安装docker
(1)安装docker
sudo yum install docker
(2)启动docker
systemctl start docker.service
(3)配置开机启动
systemctl enable docker.service
(4)查看docker版本信息
docker version
(2) 用 FZ 把 docker-domocore_bk.tar 上传到另外一台 linux 服务器上的 core 文件夹下并加载
Linux 命令 cd /home/jxl/core/
命令加载: docker load –i docker-domocore-bk.tar
(3) 查看load的 docker images
4.docker镜像文件使用方法
(1) 为了安装.NET,需要注册微软签名密钥和添加微软相关的支持
这个操作每台机器只能做一次。
打开命令行,输出以下命令,注册Microsoft需要的依赖环境;:
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl=https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc">/etc/yum.repos.d/dotnetdev.repo'
安装.NET SDK
② 更新可用的安装包:sudo yum update
②安装.NET需要的组件,libunwind和libicu库:sudo yum install libicu
sudo yum install libunwind
③ 安装.NET SDK
sudo yun install dotnet-sdk-2.2
④ 安装完成之后,检测是否安装成功
dotnet –version
(2) 依据镜像images 生成容器containers 并且设置外网端口映射
根据镜像images 生成容器containers 命令 和
把Asp.Net Core项目端口54907与 Docker容器对外暴露80端口做映射(-p 宿主端口:容器端口)
docker run -p 54907:80 demo-netcore
(3) 外网访问结果
(4)
如果设置为 docker run –p 80:80 netcoredockerdemo (外网访问的是80端口)
根据镜像启动一个container
docker run -p 54907:80 demo-netcore
没有的话:
cd /etc/sysconfig/network-scripts/ 进入到网卡目录
编辑ifcfg-eno16777736文件:把这一项改为YES(ONBOOT=yes),
Systemctl stop NetworkManager
Systemctl restart network 或者重启机器
、
(5) 容器生成后开启/停止/重启等操作
重要:
Run 只需要一次 从镜像生成容器
Start 可以多次,启动容器
下面是容器的操作
Docker实际上把所有东西都放到/var/lib/docker路径下了。
1.cd docker
Containers 目录是存放容器的(container)
image
2.docker start 容器ID
docker start/stop/restart <container> :开启/停止/重启container
docker start [container_id] :再次运行某个container (包括历史container)
docker attach [container_id] :连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach 一个container实例)
docker start -i <container> :启动一个container并进入交互模式(相当于先start,在attach)
docker run -i -t <image> /bin/bash :使用image创建container并进入交互模式, login shell是/bin/bash
docker run -i -t -p <host_port:contain_port> :映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。
注:使用start是启动已经创建过得container,使用run则通过image开启一个新的container。
(6) 本机测试Demo网址
- Linux+Nginx+Asp.Net Core
http://192.168.174.128/api/values/
- linux+docker +Asp.Net Core (sudo docker build -t demo-netcore . 制作镜像docker-domocore-bk.tar)
http://192.168.174.129:54907/api/values/
- linux+docker(使用2中生成的镜像docker load –i docker-domocore-bk.tar)
http://192.168.174.130:54907/api/values/