一、docker技术原理简介
集装箱这是现实生活中大家都熟知的,它的主要作用就是存放货物,彼此独立开来,相互隔离。docker也是运用了 集装箱思想,可以把我们工作中常用的软件或者应用打包好,然后打包他们到一个轻量级、可移植的容器中。容器可以运行在一些主流的操作系统上,包括ubuntu、centos、rhel、windows。docker中用到的资源、网络、库都是隔离的,不会出现依赖问题,就像集装箱一样,独立成型。并且docker提供 run, start, stop 等标准化操作,非常适合自动化,就像service或者systemctl启动关闭一个操作系统服务一样。
除此之外,docker也算是虚拟化,容器虚拟化,比起传统的虚拟化,他有很多优势,比如,创建速度非常快,我们docker pull拉取相应镜像就可以部署应用;共享Kernel,几乎没有性能损耗;构建隔离的标准化环境;可以提供PaaS环境,我们平时使用的虚拟化,基本都是Iaas环境。
二、docker组件
主要有客户端、服务器 、镜像 、仓库 、容器
2.1 客户端
最常见的客户端就是docker 命令,通过docker命令可以方便地在Host(宿主机)上构建和运行容器。比如docker ps
2.2 服务器
docker deamon就是服务器组件,以服务的形式运行在操作系统后台的形式运行。dockerinfo 可以查看服务器的信息。
2.3 镜像
镜像是容器的基石,是一个层叠的只读文件系统。我们可以下载别人创建好或者封装好的镜像,也可以通过现有镜像创建新的镜像。docker images ls
2.4 容器
镜像的运行实例,它通过镜像启动,使用了写时复制功能来完成文件内容的变化,与镜像配合使用,达到相辅相成的作用。
2.5 仓库
存放docker镜像的仓库,分为共有和私有两种,就像云计算里面的公有云和私有云一样,docker pull 命令可以下载镜像。docker run 命令则是再启动容器,如果本地没有镜像,它还可以先下载在启动。
三、docker常用命令
3.1 安装docker
安装软件包前,更新本地的软件仓库缓存
sudo apt update
sudo apt list |grep docker,列出docker安装包,ubuntu切换root用户,可以直接使用sudo -i
apt install docker.io 开始安装docker服务
有时候会因为网络问题得不到一些包,这时候需要在安装命令后面执行maybe run apt-get update or try with --fix-missing。
apt install docker.io --fix-missing
3.2 查看docker服务
systemctl status docker.service
3.3 查看docker版本
docker version
3.4 下载镜像
docker pull 镜像名字,一般是从registry下载。
3.5 显示镜像列表
docker image ls
3.6 查看镜像信息
docker inspect busybox
3.7 运行容器
docker run -d # 后台运行, -i :交互 , -t : 提供terminal 终端 --name 指定容器的名字 最后的参数一定docker image名: 标签
docker run -dit --name=c1 busybox
3.8 进入容器
docker exec -it 运行容器中的命令 (一定是容器里面有的命令) #在原有的容器里重新生成新的进程
3.9 访问容器进程
docker attach # 直接访问现有容器中的进程 ,不产生新的进程 , 只能接管 shell程序
3.10 启动、重启、停止、杀死容器
docker stop id/name 停止一个容器
docker start id/name 重新启动一个容器
docker kill id/name 杀死一个容器
docker restart id/name 重启一个容器
3.11 显示容器
docker ps 显示所有正在运行的容器
docker ps -a 显示所有容器
3.12 docker top id/name 显示指定容器的top信息