关于java:Docker-容器高级操作

38次阅读

共计 2121 个字符,预计需要花费 6 分钟才能阅读完成。

上篇文章介绍了一个 Nginx 的例子,对于 Nginx 这样一个容器而言,当它启动胜利后,咱们不可避免的须要对 Nginx 进行的配置进行批改,那么这个批改要如何实现呢?

附丽容器


$ docker attach

附丽容器这个次要是针对交互型容器而言的,该命令有肯定的局限性,能够作为理解即可,真正工作中应用较少。要是用 docker attach 命令,首先要确保容器曾经启动,而后应用该命令能力进入到容器中。具体操作步骤如下:

# 创立一个容器,而后启动
$ docker run --name ubuntu -it ubuntu

# 不敞开以后窗口,再关上一个新的终端
$ docker attach ubuntu

此时就能进入到容器的命令行进行操作了。如果容器曾经敞开或者容器是一个后盾容器,则该命令就无用武之地了。由下面的操作大家能够看到,这个命令的局限性很大,应用场景也不多,因而大家作为一个理解即可。

容器内执行命令


如果容器在后盾启动,则能够应用 docker exec 在容器内执行命令。不同于 docker attach,应用 docker exec 即便用户从终端退出,容器也不会进行运行,而应用 docker attach 时,如果用户从终端退出,则容器会进行运行。基于这样的个性,咱们当前在操作容器外部时,基本上都是通过 docker exec 命令来实现。

查看容器信息


容器创立胜利后,用户能够通过 docker inspect 命令查看容器的详细信息,这些详细信息包含容器的 id、容器名、环境变量、运行命令、主机配置、网络配置以及数据卷配置等信息。应用 format 参数能够只查看用户关怀的数据:

# 查看容器运行状态
$ docker inspect -f='{{.State.Running}}' ubuntu

# 查看容器 IP 地址
$ docker inspect -f='{{.NetworkSettings.IPAddress}}' ubuntu

# 查看容器名、容器 ID
$ docker inspect -f='{{.Name}} {{.ID}}' Ubuntu

# 查看容器主机信息
$ docker inspect -f='{{.HostConfig}}' ubuntu

查看容器过程


应用 docker top 命令能够查看容器中正在运行的过程,首先确保容器曾经启动,而后执行 docker top 命令。

$ docker top

查看容器日志


交互型容器查看日志很不便,因为日志就间接在控制台打印进去了,然而对于后盾型容器,如果要查看日志,则能够应用 docker 提供的 docker logs 命令来查看。

$ docker logs ubuntu

首先启动一个不停打日志的容器,而后利用 docker logs 命令查看日志,然而默认状况下只能查看到历史日志,无奈查看实时日志,应用 -f 参数后,就能够查看实时日志了。

应用 --tail 参数能够准确管制日志的输入行数,-t 参数则能够显示日志的输入工夫。同时因为增加了 -f 参数,因而,还会有其余日志继续输入。同时,因为增加了 -t 参数,工夫伴随日志一起打印进去了。

$ docker logs -f --tail=3 -t ubuntu

docker 的一大劣势就是可移植性,容器因而 docker 容器能够随便的进行导入导出操作。

容器导出


既然是容器,咱们当然心愿 Docker 也可能像 VMWare 那样不便的在不同零碎之间拷贝,不过 Docker 并不像 VMWare 导出容器那样不便(事实上,VMWare 中不存在容器导出操作,间接拷贝装置目录即可),在 Docker 中,应用 export 命令能够导出容器,具体操作如下:

本案例中我首先创立一个 nginx 容器,而后启动,启动胜利后,将本地一个 index.html 文件上传到容器中

$ docker run -itd --name nginx -p 80:80 nginx

批改 nginx 首页的显示内容

$ vi ./blog/docker/index.html
$ docker cp ./blog/docker/index.html nginx:/usr/share/nginx/html/

首先运行一个名为 nginx 的容器,而后在宿主机中编辑一个 index.html 文件,编辑实现后,将该文件上传到容器中。而后在浏览器中输出 http://localhost:80 能够看到曾经批改胜利了。

接下来通过 export 命令将容器导出,如下:

$ docker export nginx > ./blog/docker/nginx.tar

该命令将容器导入到 docker 目录下。导出胜利之后,咱们就能够随便流传这个导出文件了,能够发送给其余小伙伴去应用了,绝对于 VMWare 中宏大的文件,这个导出文件十分小。个别可能只有几百兆,当然也看具体情况。

容器导入


其余小伙伴拿到这个文件,通过执行如下命令能够导入容器(如果本人从新导入,须要记得将 docker 中和 nginx 相干的容器和镜像删除):

$ cat nginx.tar | docker import - importednginx:ilatest

容器导入胜利后,就能够应用 docker run 命令运行了。运行胜利之后,咱们发现自己定制的 index.html 页面仍然存在,阐明这是咱们本人的那个容器。

更多干货请移步:https://antoniopeng.com

正文完
 0