Docker常用命令

Docker简介

Docker是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制[1]。Docker利用Linux核心中的资源分脱机制,例如cgroups,以及Linux核心名字空间(name space),来创建独立的软件容器(containers)。这可以在单一Linux实体下运作,避免引导一个虚拟机造成的额外负担[2]。Linux核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括进程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源隔离,包括CPU、内存、block I/O与网络。从0.9版本起,Dockers在使用抽象虚拟是经由libvirt的LXC与systemd – nspawn提供界面的基础上,开始包括libcontainer库做为以自己的方式开始直接使用由Linux核心提供的虚拟化的设施,

Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

传统虚拟化
图 1.4.1.1 – 传统虚拟化
Docker
图 1.4.1.2 – Docker

从docker-compose.yml启动镜像

docker-compose up -d

从Dockerfile编译镜像

docker build -t lnmp:v1 .

运行镜像并挂载mysqls数据卷

docker run -d -v  my_data:/var/lib/mysql

运行镜像,映射端口并绑定Host目录到容器

docker run -p 8888:8888 –mount type=bind,src=/Users/allen/Workshop/www/hema/data,target=/juice-shop/data hema:v1.1

列出镜像

docker image ls

列出容器

docker container ls

查看进程

docker ps

停止容器

docker stop containerxxxx

列出和查看挂载的数据卷

docker volume ls

docker volume inspect volumexxxxxx

进入容器进行执行shell

docker exec -it containerxxxx bash

复制容器中的目录

docker cp containerxxxxxx:/etc/opt/remi/php72/php.d conf/php/php.d