Docker笔记总结

1.docker是什么?

在这里就不做介绍了,不了解的同学可以自行百度,可能知道的更准确,我在这里写一下自己学习的一些命令以及docker的整体结构。大部分内容来自于自己阅读的书籍和一些自己的理解

2.docker常用命令:

docker子命令分类:
在这里插入图片描述
docker命令结构图:
在这里插入图片描述
接下来笔者对于上面用到的命令做一些说明:
docker run命令
docker run [OPTIONS] IMAGES [COMMAND] [ARG…]
例子:
docker run ubuntu:latest echo “hello world”
从ubuntu镜像中启动一个容器,并执行echo命令,使用tag来区分不容镜像 ubuntu:16.04 ubuntu:latest

docker run -i -t --name mytest ubuntu:16.04 /bin/bash

-i表示使用交互模式,始终保持输入流开放
-t 表示分配一个伪终端,一般两个参数结合使用-it,即可在容器中利用打开的伪终端进行交互
– name 表示执行docker run 运行容器的名字,若无,docker 随机分配一个名字
-c :给运行容器中所有进程分配CPU的shares值,这是一个相对权重,实际的处理速度还与宿主机的CPU相关
-m :限制容器所有进程分配的内存总量,以B,K,M,G为单位
-v :用于挂在一个volume,可以使用多个-v挂在多个
-p : 用于将容器的端口暴露给宿主机的端口,常用格式:hostPort:container-port

docker start/restart/stop命令:开启,重启,停止一个容器
例子:docker start containerId(容器id):开启指定id的容器
使用docker start -i 开启交互模式
使用docker start -a 附加标准输入,输出或错误输出

docker pull命令
docker pull [OPTIONS] NAME[:TAG @DIGEST] :拉取镜像到本地
docker pull ubuntu :拉取最新的ubuntu镜像
docker pull ubuntu:16.04 :拉取特定版本的镜像
docker pull SEL/ubuntu :从特定的仓库拉取ubuntu

docker push命令
docker push [OPTIONS] NAME[:TAG] :将本地image或者repository推送到私有或者公有镜像库
docker push SEL/ubuntu :推送到指定仓库的ubuntu镜像

docker images命令
docker images :列出宿主机上的镜像, -a列出所有镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]

docker rmi/rm
docker rmi :用户删除镜像
docker rm :用户删除容器
docker rmi [OPTIONS] IMAGE [IMAGE…]
docker rm [OPTIONS] CONTAINER [CONTAINER…]

docker attach命令
连接到正在运行的容器,观察该容器的运行情况,或与容器的主进程进行交互
docker attach [OPTIONS] CONTAINER

docker exec命令
在运行的容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
docker exec -it ${CONTAINER ID} /bin/bash

docker inspect命令
查看镜像和容器的详细信息
docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE]
docker inspect nginx :查看镜像nginx的详细信息

docker images命令:
表示显示镜像 (docker images -a 显示所有镜像)

docker ps 命令:
显示所有运行容器信息 (docker ps -a显示所有容器)

docker commit命令
作用:可以将一个容器固化成一个镜像,当要制作特定的镜像时,会修改容器配置,如在容器中安装特定工具等,通过commit命令
可以将这些修改保存起来,使其不会因为容器的停止而丢失

3.docker的架构

在这里插入图片描述
关于docker的一些理解
1.docker本质就是宿主机上的一个进程
2.docker通过namespace实现资源隔离,通过cgroups实现了资源限制
3.docker通过driver模块实现对Docker容器执行环境的创建和管理

当需要创建docker容器时:
通过image management部分的distribution和registry模块从Docker registry中下载镜像,并通过镜像管理的image,reference,layer存储镜像的元数据
通过镜像存储驱动(graphdriver)将镜像文件存储于具体的文件系统中

当需要为docker容器创建网络环境时:
通过网络管理模块network调用libnetwork创建并配置docker容器的网络环境

当需要为docker容器创建数据卷volume时:
通过volume模块调用某个具体的volumedirver,来创建一个数据卷并负责后续的挂载操作

当需要限制docker容器的运行资源或者执行用户指令等操作时:
通过execdriver来完成。
libcontainer是namespace和cgroups的二次封装,execdirver是通过libcontainer实现对容器的具体管理,
包括利用UTS,IPC,Network,Mount,User等namespace实现容器之间的资源隔离和利用cgroups实现对容器的资源限制

当运行容器的命令执行完成后,一个实际的容器就处于运行状态,该容器拥有独立的文件系统,相对安全且相互隔离的运行环境
注意:
docker1.9之后 volume和network的生命周期独立于容器,与容器一样是docker中的一等公民
docker用户可以单独增删改查volume和network,然后在创建的时候根据需要配置给容器。

猜你喜欢

转载自blog.csdn.net/qq_27466827/article/details/82756526