Docker容器实战四:使用介绍

网友投稿 291 2022-10-21

Docker容器实战四:使用介绍

在部署完成Docker后,本文我们开始来学习产品的使用。

对于Docker的管理主要通过命令行方式进行,在客户端有着完善的命令工具供使用。对于这些命令的应用,不建议读者进行死记硬背,更好的方法是在使用中去学习。当我们需要了解这些命令时,只要在控制台输入docker并回车,即可以看到客户端支持的所有命令及相关参数。

$ dockerUsage: docker [OPTIONS] COMMANDA self-sufficient runtime for containersOptions: --config string Location of client config files (default "/root/.docker") -c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use") -D, --debug Enable debug mode -H, --host list Daemon socket(s) to connect to -l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info") --tls Use TLS; implied by --tlsverify --tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem") --tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem") --tlskey string Path to TLS key file (default "/root/.docker/key.pem") --tlsverify Use TLS and verify the remote -v, --version Print version information and quit ......

命令行的格式为“docker + [管理命令] + 一级命令 + 参数” 。在早期的时候 Docker只有一级命令,但在使用过程中容易让用户产生一些混淆,如查看镜像与容器信息都是使用docker inspect。

为了更好地进行区分,Docker官方在1.13版本时开始加入了管理命令 (Management Commands)。管理命令可以让命令的使用看起来更加规范,如查看镜像信息时,使用docker image  inspect 命令,而查看容器信息时,则是执行docker container inspect。

由于部分管理命令并非强制要求,本教程在讲解时会使用 "[ ]”进行表示。如果对相关的参数不了解,可以执行“docker + 命令 + --help”查看帮助信息,此时会列出该命令支持的所有参数和说明。

如:

$ docker container start --helpUsage: docker container start [OPTIONS] CONTAINER [CONTAINER...]Start one or more stopped containersOptions: -a, --attach Attach STDOUT/STDERR and forward signals --detach-keys string Override the key sequence for detaching a container -i, --interactive Attach container's STDIN

另外,用户可以安装bash-completion工具,用于命令自动补全,以获取更好的体验。

$ sudo yum install -y bash-completion

安装完成之后,退出并重新登录系统生效,使用时按下Tab键即会自动补全命令。

容器示例:

现在,我们以Nginx的镜像为例,来演示关于容器的启用。容器的启用过程非常简单,只需要两个步骤:

1. 下载镜像;

2. 通过镜像创建容器并启动。

首先,我们使用docker [image] pull 命令拉取nginx镜像

$ docker pull nginxUsing default tag: latestlatest: Pulling from library/nginxa2abf6c4d29d: Pull complete a9edb18cadd1: Pull complete 589b7251471a: Pull complete 186b1aaa4aa6: Pull complete b4df32aa5a72: Pull complete a0bcbecc962e: Pull complete Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31Status: Downloaded newer image for nginx:latestdocker.io/library/nginx:latest

由于国内网络某些特殊原因,在dockerhub网站拉取镜像偶尔会遇到困难,此时可以配置镜像加速器进行加速。目前,国内的各大云商都有提供这方面的加速服务。

以阿里云为例,注册阿里云账号后,登录选择“容器镜像服务”,即可以看到阿里云提供的加速地址。按照操作对本地Docker进行简单配置,并在重启服务后使用,具体操作可参见云商说明 ,此处不细说。

运行docker images 或 docker image ls 命令用于查看本机的镜像列表,可看到镜像已成功下载。

$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx latest 605c77e624dd 3 months ago 141MB

执行docker [container] run 命令,通过镜像启动一个容器。当容器正常启动后,控制台会输出该容器的完整ID号。

$ docker run --name nginx -d -p 80:80 nginx11e7ee9aed3f579266e0508eba84ead4528d7e39b55fa615411791ff6994a554

注释 : docker [container] run 用于创建容器并启动,如果本地已有镜像则直接创建容器,否则该命令会先下载镜像到本地后再创建容器;--name 用于指定生成的容器名称;-d 用于配置容器在后台运行,避免因当前终端断开而退出容器;-p 用于映射容器端口到服务器,格式为<本机端口>:<容器端口>;nginx为镜像名称;

运行docker ps 或 docker container ls 命令,查看容器启动状态,在STATUS处显示已经正常启动。

$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES11e7ee9aed3f nginx "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp nginx

打开浏览器,访问宿主机IP,可以看到Nginx服务已经运行,证明容器启动成功。

好的,现在我们已经亲手启动了一个容器,并让其提供了服务,这篇文章也可以到此结束了。

但作为一位勤于思考的技术人,或许你并不想只满足于此。此时,我们并不清楚容器的里面是如何运作的,就如同个黑盒一般。

为了能更好地了解,我们可以试着进到容器内部看看。使用docker [container] exec 命令与运行中的容器进行交互,命令需指定容器的ID号或名称,并在最后加上要执行的命令。如下:

$ docker exec -it nginx bashroot@11e7ee9aed3f:/#

该命令执行后,会开启一个容器的bash终端,当看到shell提示符已变成“@容器ID”,表示终端已正常启动,此时可以看作已进入到容器内系统。

由于nginx镜像未安装进程查看工具,我们先使用apt安装一下相关的工具。

root@11e7ee9aed3f:/# apt-get updateroot@11e7ee9aed3f:/# apt-get install procps

安装完成后,运行ps aux 命令查看进程 ,此时可看到除了终端的bash进程和ps进程外 ,容器内部只有nginx的进程在运行。

root@11e7ee9aed3f:/# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.1 8840 3484 ? Ss 01:55 0:00 nginx: master process nginx -g daemon off;nginx 31 0.0 0.0 9228 1528 ? S 01:55 0:00 nginx: worker processnginx 32 0.0 0.0 9228 1528 ? S 01:55 0:00 nginx: worker processroot 33 0.0 0.1 4600 2716 pts/0 Ss 02:07 0:00 bashroot 1664 0.0 0.0 6684 1504 pts/0 R+ 03:24 0:00 ps aux

注意看PID号,nginx的主进程号为1,表明该进程为容器内系统的第一个进程,这里可以看到容器的隔离能力。该进程也是容器的启动进程 ,当该进程退出时,容器也会跟着退出。

结语:

本篇主要对容器的应用进行了初步介绍,在这个过程中我们可以看到,容器的使用非常简单且方便。当我们要用到某个软件时,不需要再去安装产品及相关的依赖组件,只需要下载该软件的镜像并生成容器即可。

这是Docker带来的好处,也是运维和开发人员的福音!

---------------------------- End -------------------------------------

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:FlexLB:一个开源负载均衡器,自建K8S必备负载均衡组件
下一篇:组件分享之后端组件——基于Go的可扩展实时消息服务器Centrifugo
相关文章

 发表评论

暂时没有评论,来抢沙发吧~