本文共 5250 字,大约阅读时间需要 17 分钟。
我们知道不同的应用程序可能会有不同的应用环境,不同环境如果在同一个服务器上可能会产生冲突;如何隔离他们不同的环境呢?常规方式是安装不同的虚拟机,然后将不同应用安装到不同的虚拟机,但虚拟机开销很大,而docker就可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。docker可以将环境直接封装(Docker把App和Lib的文件打包成为一个镜像,这样有一定的隔离,不会冲突的作用,而且共用初始资源而不会太浪费硬件资源,不用每个都单独分配)
集群:同一个业务,部署在多个服务器上(不同的服务器运行同样的代码,干同一件事); 分布式:一个业务分拆多个子业务,部署在不同的服务器上(不同的服务器,运行不同的代码,为了同一个目的);
(1)Docker是一个开源的应用容器引擎;是一个轻量级容器技术。即docker是一个应用,该应用具有能打包其他应用成镜像和获取其他应用镜像,并运行这个镜像成容器的一个技术。 当然这些都是由docker相关命令来完成的
(2)简单理解:就是一个将应用和和其依赖包打包成镜像的技术。这个镜像一运行或者启动就成了一个独立的容器。这时候容器就是一个独立的应用。 (3)docker有一些概念:docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);docker仓库(Registry):用来保存各种打包好的软件镜像;docker镜像(Images):应用连同其依赖打包成的镜像;一般那些镜像放在docker仓库中;docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用。基于linux系统的,linux是用的centos:CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。然后在linux操作系统中安装Docker
上面安装失败终极大招:
低版本的yum install https://get.docker.com/rpm/1.7.1/centos-6/RPMS/x86_64/docker-engine-1.7.1-1.el6.x86_64.rpm另一种方式(1)curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun另一种(2)curl -sSL https://get.daocloud.io/docker | sh然后如果显示错误:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?解决方式: 顺序执行下面两条然后就OK了。 systemctl daemon-reload systemctl restart docker
上面安装好了docker环境,下面开始通过docker来完成相关的操作
(1)首先下载mysql:docker pull mysql (2)查看docker中镜像列表: docker images (3)查看docker中所有运行的容器:docker ps (4)运行mysql的镜像,使其成为一个生效的mysql容器:
docker run -p 3306:3306(端口映射) --name docker_mysql(自定义容器名) -e MYSQL_ROOT_PASSWORD=123456(要明确mysql容器密码) -d mysql(指定要启动和运行的哪个镜像)例如:docker run -p 3306:3306 --name docker_mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql-p xxx(虚拟机的端口):xxx(容器的端口)-p作用是将虚拟机的端口映射到容器应用的端口
(5)然后就可以数据库客户端连接,然后访问这个数据库容器了。
在docker中运行的容器,如何在里面进入这个mysql容器呢?
首先停止容器,不然无法修改配置文件,配置文件路径为:/var/lib/docker/containers/容器ID,在该目录下找到一个文件 hostconfig.json 。好像这个就是该容器对应的配置文件。
和
创建文件和文件夹:mkdir、touch 删除文件和文件夹:rmdir、rm 编辑文件和查看文件:vi、cat 创建文件——touch 文件名 查看文件内容——cat(或者more命令) 文件名 编辑文件内容——touch 文件名
(1)Docker是一个开源的应用容器引擎;是一个轻量级容器技术。即docker是一个应用,该应用具有能打包其他应用成镜像和获取其他应用镜像,并运行这个镜像成容器的一个技术。 当然这些都是由docker相关命令来完成的
(2)简单理解:就是一个将应用和和其依赖包打包成镜像的技术。这个镜像一运行或者启动就成了一个独立的容器。这时候容器就是一个独立的应用。 一般docker下载镜像后,并运行镜像成容器,就类似于下载一个传统app应用,并运行这个应用一样。那么如何查找这个镜像的一些文件目录信息呢?首先要查找到应用的相关目录:
在docker容器引擎中,要先运行启动容器,然后才能查看该容器的相关信息。上面要先用docker启动镜像奥!!进入容器: 以前没有图形界面的时候,操作应用都是同dos命令号来操作应用的。这边就类似这样在dash命令行中操作sudo docker exec -it ce1ca3255bf9 /bin/bash (ce1ca3255bf9 为容器的id)
使用命令:docker run --name container-name:tag -d -p 服务器端口:Docker 端口 image-name--name:自定义容器名,不指定时,docker 会自动生成一个名称-d:表示后台运行容器image-name:指定运行的镜像名称以及 Tag -p 表示进行服务器与 Docker 容器的端口映射,默认情况下容器中镜像占用的端口是 Docker 容器中的端口与外界是隔绝的,必须进行端口映射才能访问
docker run --name 自定义这个容器昵称 -d 想要运行的容器名/id值(:版本号)
上面将镜像启动就变成容器了 docker ps 查看正在运行的容器 —————— docker ps -a 查看所有运行或者没有运行的容器 docker stop 容器名/id 停止正在运行的容器 docker start 容器名/id 开启被停止的容器 docker rm 容器id 删除指定容器 。 rm 参数是删除容器,rmi 参数是删除镜像 在docker容器引擎中,查看运行的容器的相关信息。 docker运行启动一些容器后,进入这些容器中的命令方式上面要先用docker启动镜像奥!!进入容器: 以前没有图形界面的时候,操作应用都是同dos命令号来操作应用的。这边就类似这样在dash命令行中操作(sudo) docker exec -it ce1ca3255bf9 /bin/bash (ce1ca3255bf9 为要查看的容器的id)就进入该容器内部了ls就可以看该应用的目录结构了
转载地址:http://jhdxi.baihongyu.com/