Docker 学习笔记
问题:
1.为什么会有Docker?
应用程序在不同机器上部署时, 可能会因为环境不一致,导致运行失败。例如:系统不一致,命令脚本不能通用;缺少依赖;环境变量不一致等等。
针对环境配置难题,我们的解决思路就是带环境安装方案。 有两种实现:虚拟机方案和容器方案。
Docker作为容器方案对比虚拟机方案启动快、体积小、资源占用少(CPU、网络、磁盘、IO)。
2.docker多个容器可以共享资源,如何共享?共享哪些资源?为什么100Mb的容器大小,就包含了操作系统和jdk、maven、tomcat和应用程序?
3.
笔记:
1.由于docker的特点,可以实现一次构建,到处运行;随时开关,适合动态扩容、缩容;体积小,可在一台机器模拟微服务部署。
2.检查是否安装成功
命令启动docker 服务
3.image文件
# 列出本机的所有 image 文件。
$ docker image ls
# 删除 image 文件
$ docker image rm [imageName]
image文件是二进制文件,image文件是通用的,可以拷贝给别人使用。
必须基于image创建容器,一个image可以同时创建运行多个容器示例。
需要基于已有的image修改创建新的image,不要从零开始,可以将自己的image上传到docker hub或者git仓库。
$ docker image pull library/hello-world 从公共仓库拉取镜像
$ docker image pull hello-world 从公共仓库拉取镜像
$ docker image ls 查看本地镜像
$ docker container run hello-world 基于镜像,创建容器示例
4.容器文件
$ docker container run -it ubuntu bash run运行一次就会生成一个容器示例
$ docker container start [containerID] 容器stop后,可以start重新启动
# 列出本机正在运行的容器
$ docker container ls
# 列出本机所有容器,包括终止运行的容器
$ docker container ls --all
$ docker container kill [containID] 终止容器运行
$ docker container rm [containerID] 删除容器文件$ bash container stop [containerID] 终止容器运行 和kill类似 会温和一些
$ docker container exec -it [containerID] /bin/bash 进入容器,然后可以执行shell命令
$ docker container logs [containerID] 查看日志
$ docker container cp [containID]:[/path/to/file] . 拷贝容器的文件到本地
5.制作image文件
image文件包含应用程序、依赖。所以先下载一个应用程序,再其根目录下创建dockerfile文件,然后使用image创建命令,创建image文件。
#下载项目 $ git clone https://github.com/ruanyf/koa-demos.git $ cd koa-demos #项目根目录下创建 .dockerignore文件 .git node_modules npm-debug.log #创建dockerfile文件 FROM node:8.4 COPY . /app WORKDIR /app RUN npm install --registry=https://registry.npm.taobao.org 构建image过程中执行 EXPOSE 3000 CMD node demos/01.js 启动容器后会执行此命令 #创建完dockerfile 在根目录下运行命令 创建此项目的image镜像 $ docker image build -t koa-demo . # 或者 $ docker image build -t koa-demo:0.0.1 . #创建完镜像 运行命令创建启动容器 并运行脚本/bin/bash $ docker container run -p 8000:3000 -it koa-demo /bin/bash # 或者 $ docker container run -p 8000:3000 -it koa-demo:0.0.1 /bin/bash 也可以将cmd命令放在dockerfile中执行
6.发布镜像到仓库
需要在仓库注册账号,登录,使用命令推送镜像到仓库
--------学习 交流 提升-----------