Docker 容器技术的代表 将程序隔离 打包
简介 粗糙的理解为轻量层的虚拟机
Mac安装
下载 www.docker.com ->Download Docker for Mac
安装
配置
配置镜像 加速器 国内阿里云 时速云 注册帐号 专属加速器地址
Linux安装
$sudo wget -qO- https://get.docker.com/ | sh 安装docker本身
$sudo usermod -aG docker test 添加test非 超级用户管理docker
$docker info 查看docker信息
Windows安装
下载 www.docker.com ->Download Docker for Windows
镜像与容器
镜像仓库
|
客户端 <----> 守护进程 --->镜像
--->容器
docker pull 获取image
docker build 创建image
docker images 列出当前已有的image
docker run 运行 container
docker ps 列出当前正在运行的container
docker rm 删除container
docker rmi (container ID) 删除image
docker cp 在host和container之间拷贝文件
docker commit 保存改动为新的image
--------------
$docker run ubuntu echo hello docker 在ubuntu 这个image中输出 hello docker (首先会检查 容器所需的image ubuntu是否存在 不存在会去远端镜像仓库 下载)
$docker images 查看容器中 所有image
$docker run -p 8080:80 -d daocloud.io/nginx -p将80端口 映射到8080端口 开启一个nginx服务 返回当前image container id
$docker ps 查看当前运行的container
$docker cp index.html (container id)://usr/share/nginx/html 将index.html文件拷贝到 (container id)容器://usr/share/nginx/html 下
$docker commit -m 'fun' (container id) 新的image名称 docker容器内的操作都是暂时的 操作之后 需要保存 保存之后生成一个新的image
$docker stop (container id) 停止容器
$docker rmi (image id) 删除指定
$docker ps -a 列出所有容器
$docker rm id1 id2 ... 批量删除
Dockerfile 自创docker 镜像一
1>touch Dockerfile
FROM alpine:latest 从base镜像
MAINTAINER XXX 备注
CMD echo "Hello Docker" command 命令
2>docker build -t hello_docker . docker build创建image -t打标签 .路径(把.路径下所有文件传给docker engine 创建一个image)
3>docker run hello_docker 运行hello_docker image
自创docker 镜像二
1>mkdir dockerfiler2 创建新的目录
2>cd dockerfiler2
3>touch Dockerfile
FROM ubuntu 从基础镜像
MAINTAINER XXX 备注
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list 换源加速
RUN apt-get update 更新ubuntu库
RUN apt-get install -y nginx 安装 nginx
COPY index.html /var/www/html 拷贝文件到容器
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"] 将nginx在前端执行 不是以守护进程执行
EXPOSE 80 暴露80端口
4>docker build -t xxxx/hello-nginx . 构建新的image
5>docker run -d -p 8080:80 xxxx/hello-nginx 运行新的image
6>curl http://localhost curl模拟发送请求
Dockerfile 语法 :
FROM base image
RUN 执行命令
ADD 添加文件
COPY 拷贝文件
CMD 执行命令
EXPOSE 暴露端口
WORKDIR 指定路径
MAINTAINER 维护者
ENV 设定环境变量
ENTRYPOINT 容器入口 优先级高于CMD
USER 指定用户
VOLUME mount point
容器存储
镜像分层 Dockerfile中每一行产生一个新的分层 每一层都有自己的id
Volume 提供独立于容器之外的持久化存储 (数据库容器操作 )
docker exec -ti (docker id) bash
Registry 镜像仓库
术语
host 宿主机
image 镜像
container 容器
registry 仓库
daemon 守护程序
client 客户端
$docker search 镜像名 在仓库中搜索镜像
$docker pull 镜像名 将所需镜像拉到本地
$docker push 镜像名 将本地镜像 推到仓库
国内一些仓库 daocloud
时速云
aliyun
多容器app
通过 docker-compose工具