Docker学习笔记

Docker

1.Docker产生的原因

传统上认为,软件编码开发/测试结束后,所产出的成果即是程序或是能够编译执行的二进制字节码等(java为例)。
而为了让这些程序可以顺利执行,开发团队也得准备完整的部署文件,让维运团队得以部署应用程式,
开发需要清楚的告诉运维部署团队,用的全部配置文件+所有软件环境。不过,即便如此,
仍然常常发生部署失败的状况。Docker镜像的设计,使得Docker得以打破过去「程序即应用」的观念。
透过镜像(images)将作业系统核心除外,运作应用程式所需要的系统环境,由下而上打包,达到应用程式跨平台间的无缝接轨运作。

2.Docker理念

Docker基于GO语言开发

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,
也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,
使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。
只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作

总结:解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

3.启动Docker

启动命令

docker run hello-world

3.1run干了什么?

Docker学习笔记_第1张图片
run.jpg

3.2docker为什么比虚拟机快?

Docker学习笔记_第2张图片
vm.jpg

4.Docker常用命令

4.1Docker镜像命令

帮助命令

docker version
docker info
docker help

列出本地主机上的镜像

docker images [OPTIONS]
OPTIONS说明:
    -a :列出本地所有的镜像(含中间映像层)
    -q :只显示镜像ID
    --digests :显示镜像的摘要信息
    --no-trunc :显示完整的镜像信息
Docker学习笔记_第3张图片
docker-images.jpg
各个选项说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

说明:
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像     

查找镜像

docker search [OPTIONS] 镜像名字
OPTIONS说明:
    --no-trunc : 显示完整的镜像描述
    -s : 列出收藏数不小于指定值的镜像
    --automated : 只列出 automated build类型的镜像      

下载镜像

docker pull 镜像名字[:TAG]  

删除镜像

删除单个 docker rmi -f 镜像ID
删除多个 docker rmi -f 镜像名1:[TAG] 镜像名2:[TAG]
删除全部 docker rmi -f $(docker images -qa)

补充

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

4.2Docker容器命令

有镜像才能创建容器,这是根本前提(下载一个CentOS镜像演示)

新建并启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明(常用):有些是一个减号,有些是两个减号 
    --name="容器新名字": 为容器指定一个名称;
    -d: 后台运行容器,并返回容器ID,也即启动守护式容器;
    -i:以交互模式运行容器,通常与 -t 同时使用;
    -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    -P: 随机端口映射;
    -p: 指定端口映射,有以下四种格式
        ip:hostPort:containerPort
        ip::containerPort
        hostPort:containerPort
        containerPort
        
启动交互式容器
    docker run -it 镜像名字 /bin/bash   

列出当前所有正在运行的容器

docker ps [OPTIONS]
OPTIONS说明(常用):
    -a :列出当前所有正在运行的容器+历史上运行过的
    -l :显示最近创建的容器。
    -n:显示最近n个创建的容器。
    -q :静默模式,只显示容器编号。
    --no-trunc :不截断输出。

退出容器

exit 容器停止退出
ctrl+P+Q 容器不停止退出

启动容器

docker start 容器ID或者容器名

重启容器

docker restart 容器ID或者容器名

停止容器

docker stop 容器ID或者容器名

强制停止容器

docker kill 容器ID或者容器名

删除已停止的容器

docker rm 容器ID

删除多个容器

docker rm -f ($docker ps -a -q)
docker ps -a -q | xargs docker rm

启动守护式容器*

docker run -d 容器名

查看容器日志

docker logs -f -t --tail 容器ID
* -t 是加入时间戳
* -f 跟随最新的日志打印
* --tail 数字 显示最后多少条

查看容器内运行的进程

docker top 容器ID

查看容器内部细节

docker inspect 容器ID

进入正在运行的容器并以命令行交互

docker exec -it 容器ID bashShell
重新进入docker attach 容器ID
上述两个区别:
    attach 直接进入容器启动命令的终端,不会启动新的进程
    exec 是在容器中打开新的终端,并且可以启动新的进程

从容器内拷贝文件到主机上

docker cp 容器ID:容器内路径 目的主机路径

你可能感兴趣的:(Docker学习笔记)