1.准备实验机
阿里云上申请一台免费试用的Esc服务器,系统Linux CentOS 64bit。
2.安装Docker
①安装所需的包
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
③安装
sudo yum install docker-ce
④启动
sudo systemctl start docker
sudo docker run hello-world 或者 sudo docker version,如下图示就代表安装成功了。
linux上默认安装路径:/var/lib/docker
3.NetCore程序发布,部署
①发布
程序发布,按正常操作就可以,平时IIS怎么发布这里也怎么发布。
发布后,在发布的的文件夹中添加Dockerfile。Dockerfile内容如下图示。
②部署
把程序发布的文件和Dockerfile上传到linux服务器上。
这里推荐一个好用的工具MobaXterm,直接拖拉拽就可以把文件上传了。
构建镜像:docker build -t webtest:v1 .
查看镜像:docker images
创建容器:docker run --name webtest2 -p 8001:6222 -d webtest:v2
docker run --name webtest2 -p 127.0.0.1:8001:6222 -d webtest:v2 增加127.0.0.1指定只能本机访问。
docker run -it --name webtest2 -p 127.0.0.1:8001:6222 -v /home/user/deploy/web/logs:/app/logs -d webtest:v1 挂载了日志目录,这样就方便查看应用的日志。
到这里就部署完了。现在来验证下有没有成功。
③验证是否成功
查看容器IP:docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
查看dockers 内部容器分配的IP。例如容器webtest2,分配了172.17.0.4.
用curl http://172.17.0.4可以访问,就代表一切OK啦。
4.遇到的小细节
①坑1: docker端口映射到宿主机后外网无法访问的问题
解决方法:增加配置net.ipv4.ip_forward=1
# vi /etc/sysctl.conf
或者
# vi /usr/lib/sysctl.d/00-system.conf
添加如下代码:
net.ipv4.ip_forward=1
重启network服务
# systemctl restart network
查看是否修改成功
# sysctl net.ipv4.ip_forward
如果返回为“net.ipv4.ip_forward = 1”则表示成功了
②坑2:重启linux后dockers没有自动启动,重启docker后容器没有启动
重启[reboot]操作系统后,发现docker 服务未启动,容器也未启动:
1.docker自动启动设置:
systemctl enable docker.service
2、docker容器自动启动设置
在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:
docker run --restart=always
如果已经启动了则可以使用如下命令:
docker update --restart=always CONTAINER_ID
5.初学者常用命令
docker停止:service docker stop
docker开启:service docker start
删除镜像:docker rmi webtest:v2
停止容器:docker stop webtest2
开启容器:docker start webtest2
删除容器:docker rm webtest2
查看容器日志:docker logs webtest2
进入容器内部:docker exec -it webtest2 /bin/bash
退出容器内部:exit
进入容器内部后 无法 ping等命令:
先更新包管理:apt-get update
安装ping: apt-get install iputils-ping
安装vim:apt-get install vim