1.同宿主通讯
a)link别名
b)宿主映射的端口
c)与路由很象的网桥模式,创建子网,给每一个容器分配一个IP
2.不同宿主通讯
a)静态路由表
….
a)link别名
b)宿主映射的端口
c)与路由很象的网桥模式,创建子网,给每一个容器分配一个IP
a)静态路由表
….
参考:
https://www.cnblogs.com/lonelyxmas/p/10748667.html
https://hub.docker.com/_/microsoft-dotnet-core
https://github.com/dotnet/dotnet-docker/blob/master/samples/aspnetapp/Dockerfile
https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/docker/building-net-docker-images?view=aspnetcore-3.1
a)docker安装:略
b)拉取aspnet依赖镜像,建议先把镜像仓库改成国内服务商,比较快,这里是使用阿里。
docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
//(指定tag为3.1版本,可以用其他版本)也可以使用runtime镜像,或者sdk镜像,这里建议使用专用的。https://hub.docker.com/_/microsoft-dotnet-core-aspnet/
a)编写Dockerfile文件:
通过vs项目右键添加Docker支持,会自动创建一个Dockerfile文件及内容,修改文件属性为始终复制并修改里面的内容为以下内容(因为是自己手动发布,而原文件内容是要做持续集成需要编译)
#使用专有镜像及指定netcore版本作为原始依赖镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
#在容器中的当前操作目录
WORKDIR /web
#把服务器中的当目录 复制到 容器中的当前操作目录WORKDIR
COPY . ./
#暴露容器的端口
EXPOSE 80
#使用ENTRYPOINT启动容器中的应用(也可以使用CMD,两者有区别)
ENTRYPOINT ["dotnet", "MVCProject3_1.dll"]
b)发布
点击发布到目录中,并上传到linux服务上
a)创建镜像
cd publish //进入linux中的源码目录中
docker build -t web1 . //不要忘记最后一个点号,使用build命令创建镜像,名字为web1,点号表示在当前目录寻找Dockerfile文件。
b)生成容器,并后台运行式启动
docker run -i -t -d -p 5000:80 --name=my-web1 web1 /bin/bash //使用服务器端口5000映射容器的端口80
c)查看容器运行状态
docker ps //查看容器是否启动
docker logs $container_id //查看容器的日志
docker exec -it my-web1 /bin/bash //进入容器查看发布源码
d)访问部署好的容器应用
curl 192.168.31.51:5000 //5000为docker run指定的服务器端口,映射对应容器的中EXPOSE端口
生成容器时注意选项:–link参数
####1.虚拟化:将计算机各种实体资源予以抽象,转换后呈现出来。目的是对资源的充分利用,比如性能高的产能过剩和旧机器产能过低的重组重用。
####2.包括三种:全虚拟化,os虚拟化,硬件层虚拟化。
hypervisior:vmm,虚拟监视管理系统。常见的产品有vmware,kvm,xen
####3.docker简介:
Docker使用客户端-服务器 (C/S) 架构模式 使用远程API来管理和创建Docker容器。Docker 容器(Container)通过 Docker 镜像(Image)来创建,二者之间的关系类似于面向对象编程中的对象与类。
其中,Docker客户端用于向Docker服务器或守护进程发送请求。而服务器或守护进程会接受来自客户的请求(创建、运行、分发容器),并在处理完请求后返回响应结果。Docker提供了一个命令行工具docker,及一整套RESTful API。客户端和服务端既可以运行在一个机器上,也可通过 socket或者RESTful API来进行通信。
####4.docker组件:
a)Docker客户端和服务端(c/s程序):客户端发送命令,服务端执行命令,客户端可以链接其他服务端,类似于mysqld与mysql。
b)镜像:文件系统
c)Registry:变是镜像仓库,需要登录
d)容器:容器与镜像的关系类似于面向对象编程中的对象与类。
step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Step 2: 添加docker软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
//docker-ce代表社区版本,docker-ee代表父付费的企业版本
Step 4: 开启Docker服务
sudo service docker start
5.**只安装客户端版本:
yum list docker-ce-cli**
6.修改国内镜像仓库
阿里云:
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://4efqxjkt.mirror.aliyuncs.com"]
}
systemctl restart docker.service //重启docker以生效
docker images //测试是否可以
a)docker search centos //查找镜像
b)docker pull nginx //拉取镜像,需要其他版本的tag,需要到docker官方查看
c)docker rmi nginx //删除镜像
d)docker commit //构建自己的镜像1,会提交到本地服务端的镜像
e)docker build //构建自己的镜像2,使用自己的文件,制作自己的镜像
a)docker run //使用镜像创建运行容器
b)docker exec //进入容器
如: docker exec -it mynginx /bin/bash //与run选项一致
c)docker rm //删除容器
d)docker ps //查看正在运行的容器
e)docker ps -a //查看所有的容器
a)docker run -i -t -d -p 5000:5000 –name=mynginx nginx /bin/bash
选项说明:-i 交互式运行,-t 启动终端命令行,-d 后台守护式运行,-p映射端口, –name 容器名称,nginx 镜像,/bin/bash放在镜像名后的是命令,这里我们希望有个交互式 Shell
a)使用commit方式:常用来修改现有容器
b)使用build方式:常用来新部署
https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/docker/building-net-docker-images?view=aspnetcore-3.1
文件格式:1基础镜像信息 2维护者的信息 3镜像操作命令 4容器启动执行命令
FROM //基础镜像
MAINTAINER //维护者信息
COPY //从本地目录复制到镜像的容器目录中
WORKDIR //指定容器的当前的工作目录
RUN //相当于执行bash
CMD //容器启动
“`
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /web
COPY . ./
EXPOSE 80
ENTRYPOINT ["dotnet", "MVCProject3_1.dll"]
“`
docker cp $con_id:/xxx/xxx /root/tools //复制容器里的数据到本机
docker cp/root/tools $con_id:/xxx/xxx //复制本机数据到容器指定目录, 在部署的时候,如果不想复制,可以用-v映射
部署nginx整体操作:
查看容器IP:docker inspect {容器IDeas} |grep IPAddress
查看镜像:docker images
查看运行中的容器:docker ps
1.备份
先把运行中的容器提交为镜像:docker commit -p 70d5ee222609 container-mysql56-backup
再把该镜像tar保存到本地:docker save -o ~/container-mysql56-backup.tar container-mysql56-backup
2.恢复
如果是在同一台机子上做实验,先删除上一步提交的镜像:docker rmi 9ca852b519bd #最好是镜像的ID
先加载本地的tar文件到镜像列表:docker load -i ~/container-mysql56-backup.tar
再重新运行容器:docker run –name db002 -p 3308:3306 -d container-mysql56-backup #此处可以不用指定root密码,因为备份的容器中已经保存.
可以看出,恢复容器时,容器之内的原始镜像已经保存信息,但主机与容器之间的信息并未保存?
3.迁移
迁移其实就是把备份保存的tar文件迁移后再恢复的过程!
附:
删除镜像:docker rmi {ID}
删除容器:
先停止容器:docker kill {ID}
查看包括停止的所有容器:docker ps -a #查看运行的容器:docker ps,不带”-a”
删除容器:docker rm {ID}
使用docker应用,基本两个步骤.
1.有应用镜像,如mysql
2.docker容器
安装过程:
1.拉取镜像
先搜索:docker search mysql
再拉取:docker pull mysql:5.6
2.运行容器
先查看镜像是否存在:docker images
运行:docker run –name db001 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=mytest -d mysql:5.6
db001容器名称,3307为本机端口映射,mytest为root密码,mysql:5.6为镜像
3.查看进程
docker ps
4.本机连接docker映像
mysql -h192.168.1.80:3307 -uroot -pmytest
1.升级系统内核为3.10
2.安装epel源
yum install http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
3.安装docker,(因为6.5系统中有同名的docker系统包),可能需要先卸载这个系统包
#yum -y remove docker #不一定执行此命令,看是否有安装此系统包
yum -y install docker-io #在6.x系统中是此命名docker-io,在7以上系统是docker
4.设置启动
chkconfig –add docker
chkconfig –level 2345 docker on
参考:https://mos.meituan.com/library/26/how-to-install-docker-on-centos/