Docker主要知识点汇总

1.什么是Docker?

Docker是一种新的容器化技术,为应用开发和部署提供“一站式”容器解决方案,能帮助开发者高效快速的构建应用,实现“Build,Ship and Run Any App, Anywhere”,从而达到“一次构建,到处运行”的目的。是一个容器化平台,它以容器的形式将您的应用程序及其所有依赖项打包在一起,以确保您的应用程序在任何环境中无缝运行。

2.Docker 有什么特色?

物美价廉;轻量级和便携化;低CPU 和内存使用,启动、运行、关闭速度快,可以用来作为云计算的基础
对于开发和部署来说,Docker可以:更快速的交付和部署应用环境;更高效的资源利用率;更便捷的迁移和扩展性;更便捷的应用更新管理

 2.Docker与虚拟机的区别?

Docker和虚拟机都是基于软件的平台虚拟化技术,其中:

虚拟机属于完全虚拟化,即模拟完整的底层硬件环境特权指令的执行,客户操作系统无需进行修改。比如我们常用的VirtualBox,VMWare Workstation和Parallels Desktop等虚拟化软件。
Docker和其它容器技术便是操作系统级虚拟化,即直接通过内核创建虚拟的操作系统实例(内核和库),来隔离不同的进程和资源。
也就是说,Docker容器不需要额外的虚拟机管理软件和虚拟机操作系统层,直接在宿主机操作系统层面上实现虚拟化,从而达到轻量级,高效的目的。

3.Docker核心概念

 Docker底层组成:
Namespace:隔离技术的第一层,确保 Docker 容器内的进程看不到也影响不到 Docker 外部的进程。
Control Groups:LXC 技术的关键组件,用于进行运行时的资源限制。
UnionFS(文件系统):容器的构件块,创建抽象层,从而实现 Docker 的轻量级和运行快速的特性。

Docker的主要构成:
Docker Client:用户和 Docker 守护进程进行通信的接口,也就是 docker 命令。
Docker Daemon:宿主机上用于用户应答用户请求的服务。
Registry:注册服务器,注册服务器是存放仓库(Repository)的具体服务器。

Docker的三元素:
Container:用于运行应用程序的容器,包含操作系统、用户文件和元数据,相当于镜像Images的一个运行实例,Docker容器包括应用程序及其所有依赖项,但与其他容器共享内核,在主机操作系统的用户空间中作为独立进程运行。Docker容器不依赖于任何特定的基础架构:它们可以在任何计算机,任何基础架构和任何云中运行。
Images:只读的 Docker 容器模板,简言之就是系统镜像文件。Docker镜像是Docker容器的源代码,Docker镜像用于创建容器。使用build命令创建镜像
DockerFile:进行镜像创建的指令文件。Dockerfile实际上是由一行行命令组成的,让用户可以方便的创建自定义镜像。Dockerfile大体由四部分组成:指明基础镜像指令:FROM;维护者信息指令:MAINTAINER;镜像操作指令:RUN、EVN、ADD和WORKDIR等;容器启动时的执行指令:CMD、ENTRYPOINT和USER等

下边就是一个Dockerfile的例子

FROM python:2.7
MAINTAINER <xxx@qq.com>
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["app.py"]

1. 从dockerhub上pull下python 2.7的基础镜像。
 2. 维护者的信息
 3. copy当前目录到容器中的 /app目录下  复制本地主机的<src>(Dockerfile所在目录的相对路径)到容器里<dest>
 4. 指定工作路径为/app
 5. 安装依赖
 6. 暴露5000端口
 7. 启动app

4.Docker常用命令

1.检查安装 docker info
2. 查看本地镜像 docker images
3. 下载镜像 docker pull <image name>

4. 运行镜像 docker run <image name>
输入 
docker run busybox /bin/echo Hello Docker

输出
Hello Docker
这条命令是运行 busybox 镜像中的 /bin/echo 命令,参数是 Hello Docker

其他标志:

-i 保证容器的stdin开启
-t 为容器生成一个tty终端
-d 表示后台运行
--rm=true 容器终止后删除
--name name 表示 container 的名称
-v 将目录挂载到 container
--privileged=true 防止没有权限访问挂载的目录
-p 9998:80 指定端口映射
--link name:container 与其他 container 链接.
--icc=true 去除 container 之间不互通. 需要放在 run 前面.


5.删除镜像 docker rmi
docker rmi <ID>/<name>
删除所有未打 tag 的镜像

docker rmi $(docker images -q | awk '/^<none>/ { print $3 }')
删除所有镜像

docker rmi $(docker images -q)
6. 查看本地容器 docker ps
7. 查询输出docker logs <ID>/<name>

8. 启动容器docker start
docker start <ID>/<name>
9. 停止容器docker stop
docker stop <ID>/<name>
10. 重启容器docker restart
docker restart <ID>/<name>
11.删除容器 docker rm
docker rm <ID>/<name>
删除所有 Docker 容器

docker rm $(docker ps -a -q)
12.保存容器docker commit
docker commit -m='A new image' --author='Aomine' 614122c0aabb aoct/apache2
将当前的 Docker 容器保存为一个名为 aoct/apache2 的镜像。-m指定创建镜像的提交信息,--author指定镜像作者,接着是容器ID、目标镜像仓库、镜像名。

13. 镜像上传docker push
创建docker hub账户,将本地的image push 到hub上,这样其他人也可以使用了。首先我们先tag 一个image,然后将其push到我们的repo里。

docker tag id {username}/{images_name}:v1
docker push {username}/{images_name}


14. 获取镜像历史docker history
docker history <image-name>
只能对本地存在的 Docker 镜像执行这个命令。

15.进入容器
当我们使用 -d参数运行了一个Container的时候,有时候我们需要进入这个容器进行一些操作。例如有这样的一个情况,我们运行了一个app在一个容器里,我们想进入容器看看,这个app运行的状态,查看log。那们如何进入呢?

1.docker attach <ID>/<name>
$ docker run -d --name demo ubuntu /usr/bin/top -b
$ docker attach demo
2.docker exec <ID>/<name>
    docker exec -i -t webapp /bin/bash
docker attach 和 docker exec区别

docker attach让用户可以进入Container查看输出等等操作,但是并不会另外启动一个进程! 如果你用CTRL-c来退出,同时这个信号会kill Container(默认情况)

docker exec会启动另外一个进程来进入Container,这里的操作是在这个进程下的。如果你用CTRL-c来退出,不会kill 原来的Container

16.镜像的导入与导出load & save
使用 load 从 stdin 导入一个 tar 格式的镜像或者仓库,然后用 save 将 tar 镜像输出到 stdout。

docker save -o <output file> <image>或者docker save <image> > <output file>
docker load -i <file name>或者docker load < <file name>
例如:

命令 # docker save -o a.tar suse
命令 # docker load -i a.tar
17.容器导入import
用于导入 URL / 文件,从本地导入需要 - 参数。docker import [OPTIONS] URL|- [REPOSITORY[:TAG]]、URL/-二选一。
18.容器导出export
和 import 相反,export 将容器导出成 tar 压缩包。

命令 # docker run -i -t -d suse:minimal /bin/bash

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值