Docker命令

来源:互联网 发布:linux help和man 编辑:程序博客网 时间:2024/06/04 18:05

Docker

Note: 在ubuntu下,所有的命令前面要加sudo,以管理员身份运行。


获取镜像: docker pull [OPTIONS] NAME[:TAG|@DIGEST]

如: docker pull ubuntu或: docker pull ubuntu 14.04
参数 说明 -a, –all-tages 下载仓库的中该镜像的所有标签

查看镜像信息: docker images [OPTIONS] [REPOSTORY[:TAG]]

参数 说明 -a, –all 显示所有镜像 –digests 显示摘要 -q, –quiet 只显示镜像的ID

为本地镜像添加标签:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

如:

docker tag dl.dockerpool.com:5000/ubuntu:lastest newubuntu

获取镜像的详细信息: docker inspect [OPTIONS] NAME|ID [NAME|ID]

如: docker inspect 5506de2b43b

搜寻镜像: docker search [OPTIONS] TERM

参数 说明 –limit int 搜索的结果数(默认25)

删除:

  • 删除容器: docker rm [OPTIONS] CONTAINER [CONTAINER...]
参数 说明 -f, –force 强行删除该容器,即使它还在运行(使用SIGKILL命令) -l, –link 删除容器的网络连接 -v, –volumes 删除容器挂载的数据卷
  • 删除镜像: docker rmi [OPTIONS] IMAGE [IMAGE...] (Image可以是tag或者image id)
参数 说明 -f, –force 强行删除该镜像

注意:应先删除容器,再删除镜像。


查看容器: docker ps [OPTIONS]

参数 说明 -a, –all 查看所有容器,不加该参数默认只显示正在运行的容器 -n, –last int 只显示最近n个容器(包括所有状态的容器),不加该参数默认为-1 -l, –lastest 只显示最近创建的1个容器(包括所有状态的容器) -q, –quiet 只显示容器的ID -s, –size 显示容器占用空间大小

1. 查看本机存在的所有容器: docker ps -a
2. 查看本机处于终止状态的容器: docker ps -a -qdocker ps -aq


创建镜像

  • 基于已有镜像的容器创建镜像:docker commit [OPTIONS] CONTAINER [REPOSTORY[:TAG]]
参数 说明 -a, –author string 作者信息 -m, –message string 提交信息 -p, –pause 提交时暂停容器运行(默认带有此参数)

如:

Setp 1 - 运行一个镜像: docker run -ti ubuntu:14.04 /bin/bashSetp 2 - 进行一些修改: touch test (可以看到容器ID, 假设为a925cb40b3f0)Setp 3 - 提交新镜像:docker commit -m 'Add a new file' -a "Docker Newbee" a925cb40b3f0 test
  • 基于本地模板导入: cat ubuntu-14.06-x86_64-minimal.tar.gz |docker import - ubuntu 14.04

载入导出镜像

  • 导出镜像: docker save [OPTIONS] IMAGE [IMAGE...]
参数 说明 -o, –output string 将镜像导出到本地文件

如: docker save -o ubuntu_14.04.tar ubuntu 14.04
* 载入镜像: docker load [OPTIONS]

参数 说明 -i, –input string 从本地文件导入到本地镜像库
如 docker load -i ubuntu14.04.tar或:docker load < ubuntu14.06.tar 

上传镜像: docker push [OPTIONS] NAME[:TAG]

参数 说明 –disable-content-trust 跳过镜像校验(默认带有该参数)

创建容器: docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

如: docker create -ti ubuntu/lastest

参数列表请使用docker create --help查看


启动容器:

  • 方式一: docker start [OPTIONS] CONTAINER [CONTAINER...] (容器创建之后使用)
参数 说明 -a, –attach 启动之后以attach方式得到容器的标准输出流 -i, –interactive 启动之后以attach方式获得容器的标准输入流
  • 方式二: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    docker run = docker create + docker start
参数 说明 -a, –attach list 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项 -d, –detach 后台运行容器(守护态运行),并返回容器ID -i, –interactive 以交互模式运行容器,通常与 -t 同时使用 -t, –tty 为容器重新分配一个伪输入终端,通常与 -i 同时使用 -v, –volume list 在容器内创建一个数据卷 -volumes-from list 挂载一个数据卷容器到该容器中 –name string 为容器指定一个名称 –dns list 指定容器使用的DNS服务器,默认和宿主一致 –dns-search example.com 指定容器DNS搜索域名(默认为空,与宿主机一致) -h, –hostname string 指定容器的hostname -e –env list 设置环境变量(默认为空) –env-file list 从指定文件读入环境变量(默认为空) -m, –memory string 设置容器使用内存最大值 –network string 指定容器的网络连接类型,支持 bridge/host/none/Container 四种类型(默认为default) –link list 添加链接到另一个容器 -P, –publish-all 随机映射一个端口至容器内部开放的网络端口

所有参数列表请使用docker create --help查看


获得容器输出信息: docker logs [OPTIONS] CONTAINER

参数 说明 -f, –follow 查看实时日志 -t, –timestamps 显示日志产生的时间 -tail string 查看从尾部看的n条日志

终止容器:

  • 方式一:docker stop [OPTIONS] CONTAINER [CONTAINER...]
参数 说明 -t, –time int 在停止(stop)指定时间(秒为单位)后杀掉(kill)容器进程(默认为10秒)

这种方式会首先向容器发送SIGTERM信号,等一段时间后(默认为10秒),再发送SIGKILL信号终止终端。

  • 方式二:docker kill [OPTIONS] CONTAINER [CONTAINER...]
参数 说明 -s, –signal string 向容器发送信号(默认为KILL)

这种方式会直接发送SIGKILL信号来强行终止容器,不会给容器和应用程序等待的时间。


重启容器: docker restart [OPTIONS] CONTAINER [CONTAINER...]

  • 此操作可以将一个正在运行的容器重新启动,或将一个已终止的容器启动。
参数 说明 -t, –time int 对于一个正在运行的容器,Stop指定秒数之后kill该容器(默认为10秒)

进入容器

  • 方式一:docker attach
    如:docker run -tid ubuntu (假设返回的容器ID为243c32535da7)
    docker attach 243c32535da7

注意:
1. 当多个窗口同时attach到同一个容器时,所有窗口会同步显示,当某个容器因命令阻塞时,其它容器也无法执行操作;
2. 当使用attach命令进入到一个容器之后,使用[CTRL+D]退出容器会使该容器终止;
3. 如果该容器没有运行,那么先start。

  • 方式二:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
参数 说明 -d, –detach 守护模式:在后台运行命令 -e, –env list 设置环境变量(默认为空) -i, –interactive 以交互模式运行容器,通常与 -t 同时使用 -t, –tty 为容器重新分配一个伪输入终端,通常与 -i 同时使用

如: 假设现有一个ubuntu容器ID为9afa2802e68b:
docker exec -ti 9afa2802e68b /bin/bash

  • 方式三:使用外部工具nsenter
step1 - 安装nsentercd /tmp;curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz | tar -zxf-; cd util-linux-2.24;(如果没有安装curl则应先安装curl)./configure --without-ncursesmake nsentercp nsenter /usr/local/binstep2 - 使用nsenter: `nsenter [OPTIONS] <program> [args...] ` docker inspect -f {{.State.Pid}} CONTAINERnsenter -t CONTAINER_PID -m -u -i -n -p
参数 说明 -t, –target pid 进入指定的pid进程中 -m, –mount 进入到mount namespace中 -u, –uts 进入到uts namespace中 –i, –ipc 进入到System V IPC namaspace中 –n, –net 进入到network namespace中 –p, –pid 进入到pid namespace中 -U, –uer 进入到user namespace中

导入导出容器

  • 导出容器 docker export [OPTIONS] CONTAINER
参数 说明 -o, –output string 写入到文件中
如: docker export -o mydocker.tar 2842afd00ee9或: docker export 2842afd00ee9 > mydocker.tar

无论容器是否正在运行,都将这个容器导出

  • 导入容器:docker import [OPTIONS] file|URL|- [REPOSTORY[:TAG]]
参数 说明 -c, –change list 应用docker指令创建镜像 -m, –message string 提交时的文字说明

import导入后成为镜像

export和save,import和load的区别

export是保存一个容器当时的快照,会丢失所有的历史记录和元数据信息,体积较小; save是保存一个镜像,包括完整的记录,体积较大;


挂载数据卷

  • 挂载目录
    在运行的时候使用 -v source_directory:target_dirctory
    如:docker run -ti -v /src/webapp:/src/webapp ubuntu:14.04 /bin/bash

  • 挂载文件
    在运行的时候使用 -v source_file:target_file
    如: docker run -ti -v /myfile.txt:/target/myfile.txt ubuntu:14.04 /bin/bash

注意:
1. 挂载目录后,宿主机对目录内的文件进行修改,容器内相应的文件也会被修改,反之亦然
2. 挂载文件后,宿主机或容器对文件进行修改,就改变了文件的inode,则宿主机和容器的这个文件就不再是同一个文件了,文件内容不再同步
3. 由于以上原因,推荐使用目录挂载


数据卷容器

数据卷容器用于在容器间共享数据。使用--volumes-from CONTAINER
如:

step 1: 使用ubuntu镜像启动一个名为data_container的容器并挂载一个dbdata目录            docker run -ti -v /dbdata --name data_container ubuntu step 2: 将data_container容器            docker run -ti --volume-from data_container ubuntu

在任意一个容器中在这个共享的目录下进行操作。其它容器都可以看到。
注意:
1. 使用--volume-from参数挂载数据卷的容器自身并不需要保持运行状态
2. 删除了挂载的容器,数据卷并不会被删除,需要在删除最后一个还挂载它的容器时显式使用docker rm -v来指定同时删除关联的容器

原创粉丝点击