Docker简介
Docker基本概念
什么是Docker??
我们在理解docker之前,首先我们得区分清楚两个概念,**容器**和**虚拟机**。
虚拟机:我们用的传统虚拟机都有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。每一台虚拟机包括应用、必要的二进制库,以及一个完整的用户操作系统。
容器:容器是和我们的宿主机共享硬件资源及操作系统,可以实现动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。
优点:可以让您在资源受到隔离的进程中运行应用程序及其依赖关系。通过使用容器,我们可以轻松打包应用程序的代码、配置和依赖关系,将其变成容易使用的构建块,从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。容器还赋予我们对资源更多的精细化控制能力,让我们的基础设施效率更高。
Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker ,就不用担心环境问题。
总体来说, Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
Docker的组成:
-
image(镜像)
-
Container(容器)
-
Repository(仓库)
镜像是Docker运行容器的前提,仓库是存放镜像的场所,可见镜像更是Docker的核心。
小提示:镜像可以理解为我们编写的代码
常用命令
查看版本信息:
docker version
查看所有镜像信息:
docker images
运行镜像:
docker run {镜像名字(REPOSITORY)}
或者
#指定端口
docker run --name {自定义命名} -d -p {指向端口}:{镜像的默认端口}
{镜像名字}
或者
#随机分配端口
docker run --name {自定义命名} -d -P {镜像名字}
#给镜像挂载本机目录
docker run --name {自定义命名} -d -p {指向端口}:{镜像的默认端口}
-v{本机目录绝对路径}:{容器目录绝对路径}: {镜像名字}
查看正在运行的容器:
docker ps | docker container ls
查看所有容器:
docker ps -a
对一个容器的启动、重启、停止
docker start container_name/container_id
docker restart container_name/container_id
docker stop container_name/container_id
进入容器:
docker attach container_name/container_id
或者
docker exec -it {NAMES} /bin/bash
删除镜像,删除指定的镜像的话需要先停止容器的运行,然后删除容器再删除镜像
#停止容器
docker ps
docker stop container_name/container_id
#删除容器
docker rm container_name/container_id
#删除镜像
docker rmi IMAGEID
容器中安装vim
apt-get update
apt-get install vim
启动|关闭|删除 ALL 命令
#启动所有的容器命令
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
#关闭所有的容器命令
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
#删除所有的容器命令
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
#删除所有的镜像
docker rmi $(docker images | awk '{print $3}' |tail -n +2)