docker最初是dotCloud公司创始人Solomom Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并在2013年3月以Apache2.0受权协议开源,主要项目代码在GitHub上进行维护...python
docker是linux容器的一种封装,提供简单易用的容器使用接口,它是最流行的linux容器解决方案.docker的接口很是简单,用户能够方便的建立和销毁容器,docker将应用程序的依赖,打包在一个文件里面,运行这个文件就会生成虚拟容器,程序运行在虚拟容器里,如同真实物理机上运行同样,反正就是有了docker,就不用担忧讨厌的环境配置问题了!linux
它做为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具备众多的优点.nginx
Docker镜像就是一个只读的模板,镜像能够用来建立容器.docker提供了一个很简单的机制来建立镜像或更新现有镜像,用户甚至能够从其余人那里下载已经作好的镜像直接使用
镜像(image)和容器(container)的关系,就像面向对象中类和实例的关系同样,镜像是静态定义的class ;容器是镜像运行时的实体object #容器随时均可以被建立,暂停,销毁,中止,每一个容器都是相互隔离的,保证安全的平台,docker利用容器运行应用. #咱们也能够把容器看做简易的linux环境.
仓库是存放镜像文件的场所,分为公开仓库(public)和私有仓库(Private) #最大的公开仓库就是Docker Hub,存放了数量庞大的镜像供用户下载. #用户建立本身镜像以后就可使用push命令将它上传到公开或私有库,这样另一台机器使用的时候,只须要从仓库上pull下来便可 #Docker仓库和Git的概念相似,仓库注册服务器和GitHub这样的代码托管服务相似.
1.卸载旧版本 # yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 2. 设置储存库 - 安装依赖环境包 #yum install -y yum-utils \device-mapper-persistent-data \lvm2 - 稳定存储库 #yum-config-manager \ --addrepo\https://download.docker.com/linux/centos/docker-ce.repo 3.安装docker ce # yum install docker-ce docker-ce-cli containerd.io 4.添加镜像加速器 # curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://95822026.m.daocloud.io 5. 启动docker #systemctl start docker 6.验证docker可否正常使用 # docker run hello-world #舒适提示,若是想安装特定版本,请在步骤3上稍做修改便可,以下:$ yum list docker-ce --showduplicates | sort -r docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io #注意这条命令是否是跟步骤3很像...嘿,本身感觉...
docker pull hello-world #下载docker镜像,产生容器示例 docker run ubuntu #运行docker镜像,ubuntu系统 docker run -it ubuntu /bin/bush #交互式运行ubuntu容器,进入容器空间内 参数解释 -i 交互式的命令操做,-t开启一个终端提供访问, /bin/bush 指定shell解释器
打包构建一个携带vim的contos镜像文件web
1.docker run -it centos /bin/bush #先运行一个centos的基础镜像文件 2.yum install vim -y #安装vim 3.docker commit 1d5698b91178 (当前镜像id) lxf163/centos-vim #退出容器空间,提交这个容器,为新的镜像
导出/导入镜像文件redis
docker save 94e814e2efa8 > /opt/ubuntu.tar.gz #导出 docker load 94e814e2efa8 < /opt/ubuntu.tar.gz #导入镜像,自动解压缩
#---注意运行过docker镜像后,会产生容器记录;docker容器必须有后台程序在运行,不然容器就退出--- docker image ls /docker images #二者都是查看镜像 docker container ls /docker ps #二者都是查看正在运行的容器进程 docker ps -a 查看全部的容器记录 docker search centos #查询docker镜像记录
docker rm 容器id # 删除容器记录 docker rm `docker ps -aq` # 批量删除容器记录,不推荐操做此命令 docker rm -f `docker ps -aq` #强制删除全部容器记录,包括正在运行的容器,慎用!!! docker rmi 镜像id #删除镜像记录 docker rmi `docker images -aq` #批量删除镜像文件
docker tag 镜像id 新的镜像名 #修改docker镜像名,tag标记名
docker images #查看全部本级镜像 docker pull redis # 获取新的redis镜像 docker search nginx #搜索nginx 的镜像
容器相关docker
docker start/stop 容器id #启/停docker容器 docker run -it --rm 94e /bin/bash # --rm运行容器,退出后,删除容器记录 docker run --name mynginx 881 /bin/bash #运行容器后给其命名 docker run -d centos /bin/sh -c "while true;do echo hello centos; sleep 1;done" #后台不断运行一个shell语句 -d后台运行, -C指定一个shell语句 docker logs 容器id #查看容器空间内的日志 !!! docker logs -f 容器id #不间断打印容器内日志信息 docker exec -it 容器id /bin/bash # 进入正在运行的容器空间
启动容器的方式有两种: #1.基于镜像新建一个容器并启动,也就是新建一个容器 docker run nginx #2.在处于(stopped)中止状态下的容器从新启动,利用原来启动过的容器id启动. docker start as5 #由于Docker的容器太过于轻量级,大部分用户都是随时删除,随时建立.
在容器中能够运行网络应用,可是要让外部也能够访问这些应用,能够经过-P 和-p参数进行端口映射!!!shell
-P #大写P参数会随机映射端口到容器开放的网络端口 docker run -d -P training/webapp python app.py
检查映射的端口ubuntu
docker ps -l #0.0.0.0:32771->5000/tcp 其中32771是宿主机ip的端口,5000是容器端口
最好经过-p参数指定映射端口,由于-P参数随机映射端口,给访问带来极大不便vim
docker run -d -p 9999:5000 training/webapp python app.py
52ceb29239466617e2ebff333fbb9e59514910d1309961c6a94a191fbf68a646
查看指定容器的端口映射centos
#[root@localhost opt]# docker port 52c 5000/tcp -> 0.0.0.0:32771
而后经过宿主机ip:9999访问服务器
...待续