Docker学习总结2


一、镜像(image) 与Docker 注册局(registry)

Docker 注册局存储Docker 镜像
Docker Hub 是一个公共的注册局,注册局可以私有也可以以混合的方式存在
以Docker Hub 为代表的注册局也是镜像分发的渠道
注册局的镜像命名方式 [REGISTRYHOST/][USERNAME/]NAME[:TAG]
镜像可以通过docker load和docker save命令导入/出到本地文件

二、Docker 卷、绑定挂载点与端口映射

Docker 提供卷(volume) 与绑定挂载点(bind mount) 来实现在宿主机上的永久存储。

三、Docker使用的基本过程

获取镜像
前面提到了“镜像”可以理解为一个打包了运行环境的文件系统。然而在安装完Docker服务之后,本地是没有任何镜像的,所以首先需要获取所需要的镜像。
创建并启动容器
在获取到所需的镜像之后,就可以基于该镜像创建并启动一个容器,该容器就具备了镜像包含的运行环境了。同时,在创建容器时也可以设置容器的启动命令,该命令会在容器启动时执行。
进入容器并执行程序
在容器成功创建并启动之后,该容器就具备了ubuntu的运行环境。我们可以进入该容器内部,并在其内部执行任何在ubuntu系统上的程序了。这里的“程序”可以是“Linux命令”、“shell脚本”、“C++程序”等

四、基本命令

获取镜像: 使用docker pull命令,会从官方的Docker Hub库中将镜像拉取到本地。
命令的格式:

docker pull [OPTIONS] <仓库名>:<标签>  

docker pull:Docker拉取镜像的命令关键词;
[OPTIONS]:命令选项;
仓库名:仓库名的格式一般为<用户名>/<软件名>。对于Docker Hub,如果不指定用户名,则默认为library,即官方镜像;
标签:标签是区分镜像不同版本的一个重要参数,<仓库名>:<标签>会唯一确定一个镜像。默认为latest。

启动一个容器: 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。
新建并启动命令的格式:

docker run [OPTIONS] 镜像名 [COMMAND] [ARG]  

docker run: Docker创建并启动容器的命令关键词;
OPTIIONS: 命令选项,最常用的包括-d后台运行容器并返回容器ID,-i以交互模式运行容器,-t为容器分配一个伪输入终端,–name 指定启动容器的名称。更多选项请参考Docker帮助文档;
镜像名: 以<仓库名>:<标签>的方式来指定;
COMMAND: 设置启动命令,该命令在容器启动后执行;
ARG: 其他一些参数。

Docker在后台运行的标准操作包括:
检查本地是否存在指定的镜像,不存在就从公有仓库下载启动;
利用镜像创建并启动一个容器;
分配一个文件系统,并在只读的镜像层外面挂载一层可读写层;
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
从地址池配置一个ip地址给容器;
执行用户指定的启动命令;
执行完毕后容器被终止。

启动一个已经终止的容器命令的格式:

docker start [OPTIONS] 容器 [容器2...]  

docker start: Docker启动容器的命令关键词;
OPTIIONS: 命令选项;
容器: 需要启动的容器,该容器用“容器ID”或“容器名”表示,如果指定了多个容器,那么就将这些容器都启动。

停止一个容器 docker stop可以用来终止一个正在运行的容器。
命令格式如下:

docker stop [OPTIONS] Container [Container ...]  

docker stop: Docker停止容器的命令关键词;
OPTIONS:命令选项,其中-t指定等待多少秒后如果容器还没终止,就强行停止,默认等待10秒;
Container:需要启动的容器,该容器用“容器ID”或“容器名”表示,如果指定了多个容器,那么就将这些容器都启动。

注意:Docker容器是一个进程,实际上它以sh作为主进程。如果主进程停止了,那么容器也就停止了。而如果容器的“启动命令”执行完之后,由于主进程没有命令继续执行,所以主进程会停止,容器也会因此而停止了。

进入一个容器 可以通过使用ssh登陆、使用nsenter、nsinit等第三方工具、使用docker本身提供的工具进入容器;docker本身提供的工具中提供了docker exec和docker attach两个命令。
docker attach进入一个容器内部:

docker attach containerId|containerName

然后使用docker attach进入了该容器内部,实际上就是进入容器“启动命令”的终端。(containerId可以不用输全,只要能代表容器即可。例如下面的0539就是代表容器ID以0539开头的容器,一般情况下,前4位就能唯一标识一个容器了)

docker exec进入一个容器内部:

docker exec [options] containerName|containerId command [arg]

docker exec命令可以在一个运行的容器内部执行一条命令,例如下图中执行docker exec aec0 mkdir dir1后,就在容器中创建了一个dir1的文件夹。除此以外,还可以在容器中启动一个新的bash

删除容器: 使用docker rm containName|containId来删除一个处于终止状态的容器。 请留意,在不加任何参数的情况下,docker rm只能删除处于终止状态的容器。、

删除一个正在运行的容器
删除一个正在运行的容器,有两种方式:

第一种,先执行docker stop停止该容器,然后使用docker rm删除掉
第二种,执行docker rm –f命令,强制删除。

可以执行docker rm $ (docker ps -a -q),用来删除所有处于终止状态的容器。
我们知道docker ps –a命令可以查看所有容器的信息。而docker ps –a –q只查看所有容器的containerId。在Linux中,将命令放在$ ()中,会执行命令并返回命令的执行结果。因此$( docker ps -a -q)会返回所有容器的container id,而docker rm只能干掉终止的容器,而如果用docker rm删除正在运行的容器时,将不能删除掉。所以可以使用docker rm $(docker ps -a -q)来删除所有处于终止状态的容器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值