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 – 传统虚拟化
图 1.4.1.2 – Docker

从docker-compose.yml启动镜像

docker-compose up -d

从Dockerfile编译镜像

docker build -t lnmp:v1 .

FROM node:9 as installer
COPY . /juice-shop
WORKDIR /juice-shop
RUN npm install --production --unsafe-perm

FROM node:9-alpine
ARG BUILD_DATE
ARG VCS_REF
LABEL maintainer="Bjoern Kimminich <bjoern.kimminich@owasp.org>" \
      org.label-schema.name="OWASP Juice Shop" \
      org.label-schema.description="An intentionally insecure JavaScript Web Application" \
      org.label-schema.vendor="Open Web Application Security Project" \
      org.label-schema.url="http://owasp-juice.shop" \
      org.label-schema.usage="http://help.owasp-juice.shop" \
      org.label-schema.license="MIT" \
      org.label-schema.version="7.0.0" \
      org.label-schema.docker.cmd="docker run --rm -p 3000:3000 bkimminich/juice-shop" \
      org.label-schema.docker.params="NODE_ENV=string name of the custom configuration,CTF_KEY=string key to hash challenges into CTF flag codes" \
      org.label-schema.vcs-url="https://github.com/bkimminich/juice-shop.git" \
      org.label-schema.vcs-ref=$VCS_REF \
      org.label-schema.build-date=$BUILD_DATE \
      org.label-schema.schema-version="1.0.0-rc1"
WORKDIR /juice-shop
COPY --from=installer /juice-shop .
# 定义匿名数据卷,运行时可用 -v 指定一个命名的数据卷
VOLUME ["/juice-shop/data"]
# 声明暴露的端口
EXPOSE  8888
CMD ["npm", "start"]

运行镜像并挂载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

%1 $ S

发表回复