常用命令:
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 可以退出容器,不停止容器
网友评论