docker-07

2022-04-15 16:14:49 浏览数 (1)

欲知前情如何请看:

docker-01

docker-02

docker-03

docker-04

docker-05

docker-06

今天继续介绍关于镜像的命令

一.进入正在运行的容器并以命令交互

我们继续第六章的内容展开,我们在第六章的已经运行了一些镜像或者容器

我们可以输入

代码语言:javascript复制
docker ps

可以看到返回值:

代码语言:javascript复制
[root@happy2022 ~]# docker ps
CONTAINER ID   IMAGE         COMMAND                  CREATED        STATUS        PORTS                                       NAMES
5011826fe018   redis:6.0.8   "docker-entrypoint.s…"   17 hours ago   Up 17 hours   6379/tcp                                    focused_morse
ecca3c058a18   redis:6.0.8   "docker-entrypoint.s…"   21 hours ago   Up 21 hours   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp   serene_shockley
c34bf70a31a6   ubuntu        "bash"                   38 hours ago   Up 38 hours                                               sharp_hamilton

我们可以看到还有三个容器还在运行

那我现在想进去Ubuntu这个容器里,该如何进入呢?

这就是我们今天这条指令的用处

代码语言:javascript复制
docker exec -it 容器ID bashshell

例如我想进入Ubuntu系统

就可以输入:

代码语言:javascript复制
 docker exec -it c34bf70a31a6 bash

结果如下:

这样我们就成功的进入了Ubuntu容器内部

我们还可以看一下exec的帮助手册

我们输入

代码语言:javascript复制
docker exec --help

结果如下

代码语言:javascript复制
Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Run a command in a running container

Options:
  -d, --detach               Detached mode: run command in the background
      --detach-keys string   Override the key sequence for detaching a container
  -e, --env list             Set environment variables
      --env-file list        Read in a file of environment variables
  -i, --interactive          Keep STDIN open even if not attached
      --privileged           Give extended privileges to the command
  -t, --tty                  Allocate a pseudo-TTY
  -u, --user string          Username or UID (format: <name|uid>[:<group|gid>])
  -w, --workdir string       Working directory inside the container

我们上面那两条指令的意思就是交互式

还有一个命令也可以进入容器内部

代码语言:javascript复制
docker attach 容器id

我们可以看一下attach的帮助手册

代码语言:javascript复制
Usage:  docker attach [OPTIONS] CONTAINER

Attach local standard input, output, and error streams to a running container

Options:
      --detach-keys string   Override the key sequence for detaching a container
      --no-stdin             Do not attach STDIN
      --sig-proxy            Proxy all received signals to the process (default true)

attach指令 VS exec指令

1.attach 直接进入容器启动命令的终端,不会启动新的进程

用exit退出,会导致容器的停止。

2.exec是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致新容器的停止

所以这样一比较的话推荐使用docker exec命令,因为退出容器终端,不会导致容器的停止

二.从容器内拷贝文件至主机上

这条命令我们最近用的很少 ,简单介绍一下,后期用到我们会继续讲解

容器 -> 主机

代码语言:javascript复制
docker cp 容器id:容器内路径 目的主机路径
代码语言:javascript复制
root@c34bf70a31a6:/# touch 1.txt
root@c34bf70a31a6:/# pwd
/
root@c34bf70a31a6:/# exit
exit
[root@happy2022 ~]# docker cp c34bf70a31a6:/1.txt /1.txt
[root@happy2022 ~]# ls
anaconda-ks.cfg
[root@happy2022 ~]# docker cp c34bf70a31a6:/1.txt /
[root@happy2022 ~]# ls
anaconda-ks.cfg
[root@happy2022 ~]# pwd
/root
[root@happy2022 ~]# cd ..
[root@happy2022 /]# ls
1.txt  bin  boot  dev  etc  home  lib  lib64  lost found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@happy2022 /]#

通过上述指令可以看到 1.txt已经拷贝至我们的根目录下

我们可以看一下cp的帮助手册

代码语言:javascript复制
docker cp --help
代码语言:javascript复制
Usage:  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
        docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem

Use '-' as the source to read a tar archive from stdin
and extract it to a directory destination in a container.
Use '-' as the destination to stream a tar archive of a
container source to stdout.

Options:
  -a, --archive       Archive mode (copy all uid/gid information)
  -L, --follow-link   Always follow symbol link in SRC_PATH

也就是两个参数

三.导出和导入容器

这两个指令我们目前也用的比较少,等我们日后用的时候会再细细的讲一下

导出

代码语言:javascript复制
docker export 容器id > 文件名.tar

导入

代码语言:javascript复制
cat 文件名.tar | docker import -镜像用户/镜像名:镜像版本号

今天的分享就到此结束了

下次见!

0 人点赞