Docker教程-----容器管理

2021-03-14  本文已影响0人  单曲_循环
  1. 启动一个容器:
    docker run alpine /bin/echo "Hello Docker"
    image.png

当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:

我们再来看一个例子:
docker run --name myalpine -it alpine /bin/sh

image.png
docker 以镜像alpine为模板启动了一个容器, 我们将容器命名为myalpine, 在启动之后并进入容器使用/bin/sh作为命令解释器.这个时候哦我们可以执行一些常见的命令
  1. 让容器在后台(守护进程方式)运行
    docker run -d --name myalpine alpine /bin/sh

但是我们发现状态是exited, 容器启动后就会在后台运行,然后返回一个容器ID到控制台,而且上面这个容器也终止了

我们看参数的详细解释:

Name, shorthand Description
--interactive , -i Keep STDIN open even if not attached
--tty , -t Allocate a pseudo-TTY
--detach , -d Run container in background and print container ID

再尝试一个例子:
docker run --name alpine -d alpine /bin/sh -c "while true; do echo $((i++)); sleep 1;done"

image.png
当我们attach进去之后
image.png

至于这里为什么只显示5 ,或者你可能显示得是其他得数字, 这里以后细细研究

  1. 从容器中退出
    exit OR ctrl+c

    image.png
  2. 启动已终止的容器
    docker start myalpine

    image.png
  3. 进入在后台运行的容器
    docker attach myalpine

    image.png
    或者: nsenter (包含在 util-linux中)
    yum install util-linux
    我们使用一个脚本来进入容器
    vim docker_in.sh
#! /bin/bash
# Use nsenter to access docker container
docker_in(){
NAME_ID=$1
PID=$(docker inspect --format "{{ .State.Pid}}" $NAME_ID)
nsenter --target $PID --mount --uts --ipc --net --pid /bin/sh
}
docker_in $1

执行 :
chmod +x ./docker_in.sh
./docker_in.sh myalpine

image.png
但是发现通过nsenter进入的容器环境有很多不一样的地方,比如ls不能使用, 文件环境不一样, 这里回头再更新改进...........
  1. 不进入容器让容器执行命令
    docker exec alpine whoami
    image.png

同时, 使用exec还可以进入容器
docker exec -it alpine /bin/sh

image.png
上一篇下一篇

猜你喜欢

热点阅读