docker基础
镜像:是一个只读的模板,类似于安装系统用到的那个iso文件,我们通过镜像来完成各种应用的部署。镜像可以用来创建Docker容器
容器:镜像类似于操作系统,而容器类似于虚拟机本身。它可以被启动、开始、停止、删除等操作,每个容器都是相互隔离的。可以把容器看做是一个简易版的linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
仓库:存放镜像的一个场所,仓库分为公开仓库和私有仓库。 最大的公开仓库是Docker hub(hub.docker.com),国内公开仓库
(dockerpool.com)
docker基础命令
docker search ubuntu ---查找ubuntu系统的容器
docker pull ubuntu ---下载ubuntu容器
docker images ---查看现有的镜像
docker ps ---查看docker的进程
docker ps -a ---查看docker所有运行过的进程
docker rm 名字 ---删除已经停止进程的容器
docker rmi ubuntu ---删除镜像
docker start -i 名字 ---启动已经关闭的进程
docker stop 名字 ---关闭运行的容器
docker run --name 起名字 -d 容器 /bin/bash --- -d是以后台的形式运行
docker logs -t peiqi12 --- t为显示时间的形式显示进程容器log日志
docker run -p 41061:22 -p 8888:80 -d -v /web tomsik68/xampp ---访问的时候利用ssh访问镜像
ssh -p 41061 root@localhost ---密码root可以连接ssh进入xampp主机
在www目录下创建index.html即可。
访问url xx.xx.xx.xx:8888/www/index.html
参数说明
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
实战运行
上述命令我们开启了 docker服务,并且以交互式命令并且以伪终端(因为docker都是以进程的形式运行)的形式,进入了docker交互页面,参考上面-i -t,并且给容器名字命名为 ubuntu,主机名为 test。 /bin/bash的作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash。所有docker容器都是以进程而存活,如果没有进程那么自动关闭。
这样进入搭建docker,如果退出终端的话,相应进程也会关闭,docker也就终止,我们接下来介绍一个长期能够搭建在web上的docker命令。
我们用端口映射进入docker进程, -p 物理机端口:容器端口。这里设置了两个端口,一个是方便进入容器管理,另一个是映射80端口服务,-d返回容器ID,-v称之为 挂载也称为存储卷。此时在/www目录写web,整套的 docker web服务进程搭建完毕。
这样便会在后台进程运行,其他命令如:
docker run hello-world
只是一个进程,运行完毕就消失了。
总结
1.docker 可以理解为开启一个或一些进程,但是环境和物理机是分开的,可以用端口映射,映射到物理机,在物理机上是一套完整的操作系统,会占用其他资源,但是docker是进程级别的,资源全部用在进程上,所以速度会快。
2.可一台服务器搭建多个分离的linux环境,Docker容器可以理解为在沙盒中运行的进程,这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等。但这个沙盒默认是不会运行任何程序的,需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全停止。
3.使用方便速度快,由于是一个进程,所以只需要一个命令打开进程便可以开启一个web服务上线一套网站等且环境与物理机分离,对物理机来说比较安全。或者其他服务等。