
容器是应用程序层的抽象,将代码和依赖项打包在一起。多个容器可以在同一台计算机上运行,并与其他容器共享OS内核,每个容器在用户空间中作为隔离的进程运行。容器占用的空间少于VM,可以处理更多的应用程序,并且需要的VM和操作系统更少。
docker的基本概念:
Docker系统有两个程序:docker服务端和docker客户端
Docker服务端:
是一个服务进程,管理着所有的容器。
Docker客户端:
是docker服务端的远程控制器,可以用来控制docker的服务端进程。
docker的优势:
交付物标准化
Docker是软件工程领域的”标准化”交付组件,最恰到好处的类比是”集装箱”。
集装箱将零散、不易搬运的大量物品封装成一个整体,集装箱更重要的意义在于它提供了一种通用的封装货物的标准,卡车、火车、货轮、桥吊等运输或搬运工具采用此标准,隧道、桥梁等也采用此标准。以集装箱为中心的标准化设计大大提高了物流体系的运行效率。
传统的软件交付物包括:应用程序、依赖软件安装包、配置说明文档、安装文档、上线文档等非标准化组件。
Docker的标准化交付物称为”镜像”,它包含了应用程序及其所依赖的运行环境,大大简化了应用交付的模式。
一次构建,多次交付
类似于集装箱的”一次装箱,多次运输”,Docker镜像可以做到”一次构建,多次交付”。当涉及到应用程序多副本部署或者应用程序迁移时,更能体现Docker的价值。
应用隔离
集装箱可以有效做到货物之间的隔离,使化学物品和食品可以堆砌在一起运输。Docker可以隔离不同应用程序之间的相互影响,但是比虚拟机开销更小。
总之,容器技术部署速度快,开发、测试更敏捷;提高系统利用率,降低资源成本。
namespace
cgroups
rootfs
docker的三大组件:
Docker 镜像 - Docker images
Docker 仓库 - Docker registeries
Docker 容器 - Docker containers
docker安装部署:
1.删除已安装的docker(可选项,如果系统中已经存在docker我们就删除)
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine
2.部署docker的yum仓库
yum install -y yum-utils device-mapper-persistent-data lvm2 git (部署docker安装的环境)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.下载安装docker
yum -y install docker-ce (默认下载最新版本docker)
或指定版本下载 yum -y install docker-ce-19.03.0.ce
4.启动docker
systemctl start docker
systemctl enable docker (开机启动)
5.docker -v (查看docker版本)
docker info (查看docker运行状态)
6.镜像仓库
官方镜像站:www.docker.com
国内镜像站:www.daocloud.io
7.登入登出docker hub
docker login (官方仓库)
docker login daocloud.io (daocloud仓库)
docker logout
8.docker基本使用命令
docker images (查看本地有效镜像)
docker search centos (查看centos所有的镜像)
docker pull (下载镜像)
docker image inspect 镜像id (查看镜像详细信息)
docker rmi REPOSITORY+版本号 (删除镜像,如果不加版本号默认删除latest)
docker rmi `docker ps -a -q`(删除所有容器)
docker rm 容器id (删除容器)
docker run -itd --name feifei -p 8080:8080 tomcat:8.0.45 (运行容器命名为feifei放在后台运行
docker run -itd -p 81:80 -v /web:/usr/share/nginx/html nginx:latest (将宿主机的81端口映射到容器的80端口,宿主机/web目录映射到容器的/usr/share/nginx/html)
docker run -itd nginx:latest /bin/bash (容器内使用/bin/bash命令)
docker run 参数:
• -v:文件映射,格式为:主机目录:容器目录
• -d: 后台运行容器,并返回容器ID;
• -i: 以交互模式运行容器,通常与 -t 同时使用;
• -p: 端口映射,格式为:主机(宿主)端口:容器端口
• -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
• --name="nginx-lb": 为容器指定一个名称;
• --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
• --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
• -h "mars": 指定容器的hostname;
• -e username="ritchie": 设置环境变量;
• --cpuset-cpus="0-2" or --cpuset-cpus="0,1,2": 绑定容器到指定CPU运行;
--privileged 以特权模式运行
docker ps (查看运行状态的容器)
docker ps -a (查看所有容器)
docker ps -a -q (查看所有容器的id)
docker ps -l (查看最后一次启动的容器)
docker inspect feifei (查看容器feifei的详细信息)
docker stop feifei(关闭容器feifei)
docker start feifei(启动容器feifei)
docker exec -it feifei /bin/bash ,docker exec -it feifei /bin/sh(连接容器操作)
exit或ctrl+q+p退出但不关闭
