美文网首页
docker常用命令

docker常用命令

作者: Trouble_Ma | 来源:发表于2018-10-17 20:03 被阅读0次

常用命令:

search # 查找仓库中是否有指定镜像
docker search hello-world
  pull # 从仓库中下载某一个镜像

docker pull hello-world # 本镜像只包含最简单的一个输出操作,打印出hello world即为成功

后续其他操作请下载 centos 镜像进行操作

images # 查看本地镜像列表,,本地存储位置/var/lib/docker/image
docker images
==========================================================

run

docker run 命令解释:

1. 命令会检测当前要运行的镜像在本地存不存在,若不存在他会自动 pull 下来再运行

2. 运行后会启动一个容器, 并且开启一个文件系统, 你可以直接在容器内创建文件夹. 运行一个指定的程序, 当程序退出后, 容器也就退出了

3. 运行时的容器无法删除, 只能停止后删除, 或者加上 -f 参数强制删除

语法:
docker run [options] [command] # 启动容器

例子:


  docker run centos /bin/echo 'Hello world'

  docker run --name mycentos -it centos /bin/bash

  docker run -d --name=dd c5d1 /bin/bash -c "while true; do echo hello docker; sleep 1 ; done" #c5d1 镜像id

===========================================================
  参数详解:

-it 是两个参数的缩写

-i 表示容器的输入终端保持打开,不直接关闭

-t 表示开启一个虚拟终端, 绑定到标准输入上

-d 表示让该容器在后台运行

-c: 通过-c可以调整容器的CPU优先级。默认情况下,所有的容器拥有相同的CPU优先级和CPU调度周期,但你可以通过Docker来通知内核给予某个或某几个容器更多 的CPU计算周期。比如,我们使用-c或者–cpu-shares =0启动了C0、C1、C2三个容器,使用-c/–cpu-shares=512启动了C3容器。这时,C0、C1、C2可以 100%的使用CPU资源(1024),但C3只能使用50%的CPU资源(512)。如果这个主机的操作系统是时序调度类型的,每个CPU时间片是100微秒,那么C0、 C1、C2将完全使用掉这100微秒,而C3只能使用50微秒。

· -c后的命令是循环,从而保持容器的运行。

ps # 查看容器列表

docker ps # 查看正在运行中的容器

-a 查看所有容器

-l 查看最后一个运行的容器

rm # 删除某个容器
docker rm helloworld

-f 强制删除容器
dockedockerr rm $(docker ps -qa) : 删除所有容器

rmi # 删除某个镜像
`

docker rmi karthequian/helloworld
`

-f 强制删除镜像

inspect # 获取容器的详细信息
docker inspect CONTAINERID

-f 格式化(go 语言的格式化语法如:{{.State.Pid}})

进入容器:请使用可运行的容器比如:centos进入

attach

Docker 提供了 attach 命令来让我们进入容器,但在使用该命令的时候有一个问题,当多个窗口同时进入容器时,所有窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作,所以该命令不适用于生产环境

语法:

  docker attach CONTAINERID

  docker run -d -it centos /bin/bash

  nsenter

在以上方式不适合的情况下,可以采用外部工具 nsenter 的方式进入容器,使用起来也相对方便

如果系统默认没有这个工具 nsenter 可以使用如下方式安装:

  wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz

  tar -zxvf util-linux-2.24.tar.gz

  cd util-linux-2.24/

  ./configure --without-ncurses

  make nsenter

  sudo cp nsenter /usr/local/bin

使用方式:

1. 获取容器的 pid

PID=docker inspect -f {{.State.Pid}} CONTAINER

2. 进入容器
sudo nsenter --target $PID --mount --uts --ipc --net --pid
示例:nsenter --target 10679 --mount --uts --net --pid
  如果嫌每次都需要输入两条命令加上这么多的参数,可以写一个脚本,将 CONATINER 作为 id 传入即可,如:

  ARG=$1

  PID=`docker inspect --format "{{.State.Pid}}" $ARG`

  sudo nsenter --target $PID --mount --uts --ipc --net --pid

exec

另一种进入容器的方式就是使用 exec 命令,这个命令是 docker 1.3 版本之后提供的,这种方式相对来说简单些

语法:
docker exec [options] CONATINER COMMOND [ARG]

-i 表示容器的输入终端保持打开,不直接关闭

-t 表示开启一个虚拟终端, 绑定到标准输入上

-d 表示让该容器在后台运行
示例:docker exec -it contrainerId /bin/bash

PS: 使用 Ctrl + P + Q 或者exit 可以退出容器,不停止容器

相关文章

网友评论

      本文标题:docker常用命令

      本文链接:https://www.haomeiwen.com/subject/rntdzftx.html