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.发布镜像到仓库

需要在仓库注册账号,登录,使用命令推送镜像到仓库

--------学习 交流 提升-----------
原文地址:https://www.cnblogs.com/blogNYGJ/p/11762161.html