Docker入门-经常使用命令

Docker镜像操做

Docker运行容器前须要本地存在对应的镜像,若是本地不存在该镜像,Docker会从镜像仓库下载该镜像。redis

获取镜像

从Docker镜像仓库获取镜像的命令是docker pull。其命令格式为:docker

docker pull [选项][Docker Registry地址[:端口号]/]仓库名[:标签]

具体的选项能够经过docker pull --help命令看到,这里咱们说一下镜像名称的格式。Docker镜像仓库地址:地址的格式通常是<域名/IP>[:端口号]。默认地址是Docker Hub。仓库名:如以前所说,这里的仓库名是两段式名称,即<用户名>/<软件名>。对于Docker Hub,若是不给出用户名,则默认为library,也就是官方镜像。shell

docker pull ubuntu:16.04

上面的命令中没有给出Docker镜像仓库地址,所以将会从Docker Hub获取镜像。而镜像名称是ubuntu:16.04,所以将会获取官方镜像library/ubuntu仓库中标签为16.04的镜像。ubuntu

运行镜像

有了镜像后,咱们就可以以这个镜像为基础启动并运行一个容器。以上面的ubuntu:16.04为例,若是咱们打算启动里面的bash而且进行交互式操做的话,能够执行下面的命令。bash

docker run -it --rm ubuntu:16.04 bash

-it:这是两个参数,一个是-i:交互式操做,一个是-t终端。spa

--rm:这个参数是说容器退出后随之将其删除操作系统

ubuntu:16.04:这是指用ubuntu:16.04镜像为基础来启动容器。rest

bash:放在镜像名后的是命令,这里咱们但愿有个交互式shell,所以用的是bash。日志

最后咱们经过exit退出了这个容器。code

列出镜像

要想列出已经下载下来的镜像,能够使用docker image ls命令。列表包含了仓库名、标签、镜像ID、建立时间以及所占用的空间。

docker image ls

查看镜像、容器、数据卷所占用的空间。

docker system df

仓库名、标签均为<none>的镜像称为虚悬镜像(dangling image),显示这类镜像

docker image ls -f dangling=true

通常来讲,虚悬镜像已经失去了存在的价值,是能够随意删除的,能够用下面的命令删除

docker image prune

删除本地镜像

若是要删除本地的镜像,能够使用docker image rm命令,其格式为:

docker image rm [选项] <镜像1>[<镜像2>...]

其中,<镜像>能够是镜像短ID、镜像长ID、镜像名或者镜像摘要。

使用docker image ls -q来配置docker image rm,这样能够批量删除但愿删除的镜像。

docker image rm $(docker image ls -q ubuntu) #删除全部仓库名为redis的镜像

或者删除全部在ubuntu:16.04以前的镜像:

docker image rm $(docker image ls -q -f before=ubuntu:16.04)

Docker容器操做

容器是独立运行的一个或一组应该,以及它们运行态环境。对应的,虚拟机能够理解为模拟运行的一整套操做系统(提供了运行态环境和其余系统环境)和跑在上面的应用。

启动容器

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

由于Docker的容器实是轻量级的,用户能够随时删除和新建立容器。

新建并启动

docker run

输出一个“Hello World”,以后终止容器。

docker run ubuntu:16.04 /bin/echo "Hello world"

启动已终止容器

docker container start 或者 docker start

启动一个bash终端,容许用户进行交互。

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

-t 让Docker分配一个伪终端并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。当利用docker run来建立容器时,Docker在后台运行的标准操做包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  • 利用镜像建立并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  • 从地址池配置一个ip地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

后台运行

不少时间,须要让Docker在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,能够经过添加-d参数来实现。

若是不使用-d参数运行容器,好比docker run hello-world会把日志打印在控制台。 若是使用-d参数运行容器,好比docker run -d hello-world不会输出日志,只会打印容器id(输出结果能够用docker logs查看);

注:容器是否会长久运行,是和docker run指定的命令有关,和-d参数无关。

中止运行的容器

能够使用docker container stop来终止一个运行中的容器。终止状态的容器能够用docker container ls -a 命令看到。处于终止状态的容器,能够经过docker container start命令来从新启动。此处,docker container restart命令会将一个运行态的容器终止,处于再从新启动它。

进入容器

在使用-d参数时,容器启动后进入后台,某些时候须要进入容器进行操做,使用docker exec命令能够进入到运行中。

exec命令 -i -t参数

docker exec后边能够跟多个参数,这是主要说明 -i -t参数。 只用-i参数时,因为没有分配伪终端,界面没有咱们熟悉的Linux命令提示符,但命令执行结果仍然能够返回。当-i -t参数一块儿使用时,则能够看到咱们熟悉的Linux命令提示符。

docker exec -it 容器id /bin/bash

导出和导入容器

导出容器

若是要导出本地某个容器,能够使用docker export命令。

docker export 容器ID>导出文件名.tar

导入容器

能够使用docker import从容器快照文件中再导入为镜像

cat 导出文件名.tar|docker import - 镜像用户/镜像名:镜像版本

此外,也能够经过指定URL或者某个目录来导入

docker import http://study.163.com/image.tgz example/imagerepo

删除容器

删除容器

能够使用docker container rm来删除一个处于终止状态的容器

docker container rm ubuntu:16:04

若是要删除一个运行中的容器,能够添加-f参数。Docker会发送SIGKILL信号给容器。

清楚全部处于终止状态的容器

用docker container ls -a 命令能够查看全部已经建立的包括终止状态的容器,若是数量太多要一个个删除能够会很麻烦,用下面的命令能够清理掉全部处于终止状态的容器。

docker container prune
相关文章
相关标签/搜索