Docker 简介
容器
容器是直接运行在操作系统内核之上的用户空间。容器不仅仅是一个单纯的运行环境,在自己的权限范围内,容器更像是一个完整的宿主机。容器有独立的网路和存储栈,还拥有自己的资源管理能力,使得同一台宿主机中的多个容器可以友好的共存。
Docker
Docker是一个能够把开发得应用程序自动部署到容器得开源引擎。
Docker镜像是构建docker世界得基石,用户基于镜像来运行自己得容器。
镜像是Docker生命周期中得构建或者打包阶段,而容器是启动或者执行阶段。
Docker应用场景
- 加速本地开发和构建流程,使其更加高效,轻量化。
- 高性能,超大规模得宿主机部署。
Docker 命令
# 拉取镜像
docker pull
# 查找镜像
docker search images_name
# 运行一个容器
docker run -it --name docker_name ubuntu /bin/bash
# 启动容器
docker start docker_name
# 停止容器
docker stop docker_name
# 重启容器
docker restart docker_name
# 查看所有容器
docker ps
# 附着到容器[如果推出容器得shell,容器会停止]
docker attach docker_name
# 查看日志
docker logs docker_name
# 统计容器信息
docker stats
# 进入容器
docker exec -it docker_name /bin/bash
# 自动重启容器
docker run --name docker_name --restart=always ubuntu /bin/bash
# 删除容器
docker rm docker_name
# 删除镜像
docker rmi docker_image
# 查看镜像
docker images
# wangjunzzz仓库名,static_web镜像名,v1 标签 --no-cache 不使用缓存
docker build --no-cache -t="wangjunzzz/static_web:v1"
# 推送镜像
docker push wangjunzzz/static_web
Dockerfile构建镜像
指令
- FROM 指定基础镜像
FROM ubuntu:14.04
- CMD 用于指定一个容器启动时要运行得命令,有点类似RUN,只是run指令是指在镜像构建是要运行得命令。docker run 命令可以覆盖CMD指令。
CMD ["yum","install","-y","nginx"]
- ENTRYPOINT 和CMD指令很相似,执行cmd指令得时候docker run命令会覆盖,但是entrypoint不会,docker run 命令行中得参数都会被当作参数传递给entrypoint指令中指定得命令。
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off"]
- WORKDIR 指定容器内部工作目录,entrypoint和cmd指令在该目录下执行。
WORKDIR /opt/webapp
- ENV 设置环境变量
#docker build -t supback --build-arg env="Development" .
ENV ASPNETCORE_ENVIRONMENT=$env
- USER 指定镜像以什么样得用户去运行,默认root
USER user
USER uid:group
- VOLUME 挂载卷
VOLUME ["/data"]
- ADD 将构建环境下的文件和目录复制到镜像中,并且还可以解压
ADD /mnt/test.zip /root/test.zip
- COPY 将构建环境下的文件和目录复制到镜像中,只是复制
COPY /mnt/test.zip /root/test.zip
- LABEL 指定元数据
#镜像的相关信息
LABEL Discription="这是基于dotnetcore的泛优镜像"
LABEL version="1.0"
- ARG 构建时候传递参数变化
#定义参数 通过ARG 可以在构建镜像的时候定义参数
ARG env
# 设置环境变量
ENV ASPNETCORE_ENVIRONMENT=$env
#基于之前的Dockerfile构建泛优的系统镜像
docker build -t supback --build-arg env="Development" .
Docker-Compose
安装
#安装pip
yum -y install epel-release
yum -y install python-pip
pip install --upgrade pip
pip install docker-compose
docker-compose version