docker基本命令

356 阅读4分钟

获取镜像 docker pull

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

例如:docker pull ubuntu:16.05

运行镜像 docker run

docker run -it --rm ubuntu:16.04 bash

-it :这是两个参数,一个是 -i :交互式操作,一个是 -t 终端。
--rm :这个参数是说容器退出后随之将其删除。
ubuntu:16.04 :这是指用 ubuntu:16.04 镜像为基础来启动容器。
bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash 。

最后我们通过 exit 退出了这个容器

列出镜像

docker image ls

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

docker system df

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

docker image ls -f dangling=true

虚悬镜像删除

docker image prune

删除本地镜像

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

使用 docker image ls -q 来配合 docker image rm ,这样可以批量删除希望删除的镜像。

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

删除所有在 ubuntu:16.04 之前的镜像

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

启动容器

docker run  例如: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 地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

后台运行

  • 如果不使用 -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 容器ID > 导出文件名.tar
  • 导入容器
  1. 可以使用 docker import 从容器快照文件中再导入为镜像
cat 导出文件名.tar | docker import - 镜像用户/镜像名:镜像版本
  1. 此外,也可以通过指定 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

docker cp(容器拷贝)

  • copy宿主机文件到docker容器内
docker cp index.html mynginx:/usr/share/nginx/html/index.html
  • copy容器内的文件到宿主机
docker cp mynginx:/usr/share/nginx/html/50x.html ./