当前位置:   article > 正文

Docker容器的使用_docker mc book 使用 命令

docker mc book 使用 命令

目录

一、Docker客户端:

二、使用方法

1.运行一个网络应用:

2.查看WEB应用容器

3.网络端口的快捷方式

4.查看WEB应用程序日志

5.查看WEB应用程序容器的进程

6.检查WEB应用程序

7.停止WEB应用容器

8.重启WEB应用容器

9.移除WEB应用容器

三、Docker的使用

1.容器理解

2.运行交互式的容器

3.启动容器(后台模式)

4.停止容器

四、Docker容器的使用常遇问题及处理

1、容器启动失败

2、容器无法访问外部网络

3、容器文件系统读写权限问题

4、容器端口映射失败

5、容器占用过多资源

五、Docker容器的使用的注意点


一、Docker客户端:

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker

输入docker命令来查看到Docker客户端的所有命令选项

可以通过命令 docker命令--help 更深入的了解指定的Docker命令使用方法。

二、使用方法

1.运行一个网络应用:

  1. 〜#docker pull tr​​aining/webapp 载入镜像
  2. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker run -d -P training/webapp python app.py
  • -d:让容器在后台运行。
  • -P:将容器内部使用的网络端口映射到我们使用的主机上。

2.查看WEB应用容器

  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. bb51b0a936af training/webapp "python app.py" 8 minutes ago Up 7 minutes 0.0.0.0:32768->5000/tcp inspiring_elbakyan

Docker开放了5000端口(默认Python Flask端口)映射到主机端口32769上。

这时我们可以通过浏览器访问WEB应用
http://172.20.200.219:32768/ 上可以看到Hello world!
我们也可以通过-p参数来设置不一样的端口:
  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker run -d -p 5000:5000 training/webapp python app.py
  2. 642ca47f644571843bfba0f9bcd8943eae5e4e644ab4318f858c90c76aa924ce
  3. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker ps
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. 642ca47f6445 training/webapp "python app.py" 12 seconds ago Up 10 seconds 0.0.0.0:5000->5000/tcp affectionate_mccarthy
  6. bb51b0a936af training/webapp "python app.py" 33 minutes ago Up 33 minutes 0.0.0.0:32768->5000/tcp inspiring_elbakyan

容器内部的5000端口映射到我们本地主机的5000端口上。

3.网络端口的快捷方式

通过docker ps命令可以查看容器的端口映射,docker还提供了另一个快捷方式:docker port,使用docker port可以查看指定(ID或者名字)容器的某个确定端口映射到宿主机的端口号。
上面我们创建的web应用容器ID为:642ca47f6445 名字为affectionate_mccarthy
我们可以使用以下方法来查看端口的映射情况
  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker port 642ca47f6445
  2. 5000/tcp -> 0.0.0.0:5000
  3. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker port affectionate_mccarthy
  4. 5000/tcp -> 0.0.0.0:5000

4.查看WEB应用程序日志

  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker logs -f 642ca47f6445
  2. * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
  3. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker logs -f affectionate_mccarthy
  4. * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

-f:dokcer记录像使用 tail -f  一样来输出容器内部的标准输出。

从上面,我们可以看到应用程序使用的是5000端口并且能够查看应用程序的访问日志。

5.查看WEB应用程序容器的进程

  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker top affectionate_mccarthy
  2. PID USER TIME COMMAND
  3. 5551 root 0:00 python app.py

6.检查WEB应用程序

使用Docker检查来查看Docker的底层信息。它会返回一个JSON文件记录Docker容器的配置和状态信息。
  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker inspect affectionate_mccarthy
  2. [
  3. {
  4. "Id": "642ca47f644571843bfba0f9bcd8943eae5e4e644ab4318f858c90c76aa924ce",
  5. "Created": "2018-06-21T13:43:02.676109892Z",
  6. "Path": "python",
  7. "Args": [
  8. "app.py"
  9. ],
  10. "State": {
  11. "Status": "running",
  12. "Running": true,
  13. "Paused": false,
  14. "Restarting": false,
  15. "OOMKilled": false,
  16. "Dead": false,
  17. "Pid": 5551,
  18. "ExitCode": 0,
  19. "Error": "",
  20. "StartedAt": "2018-06-21T13:43:03.150933631Z",
  21. "FinishedAt": "0001-01-01T00:00:00Z"
  22. },
  23. .....

7.停止WEB应用容器

  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker stop affectionate_mccarthy
  2. affectionate_mccarthy
  3. docker ps -l查询最后一次创建的容器:
  4. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker ps -l
  5. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  6. 642ca47f6445 training/webapp "python app.py" 17 minutes ago Exited (137) 39 seconds ago affectionate_mccarthy

8.重启WEB应用容器

  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker start affectionate_mccarthy
  2. affectionate_mccarthy
  3. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker ps -l
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. 642ca47f6445 training/webapp "python app.py" 19 minutes ago Up 3 seconds 0.0.0.0:5000->5000/tcp affectionate_mccarthy

9.移除WEB应用容器

  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker rm affectionate_mccarthy
  2. Error response from daemon: You cannot remove a running container 642ca47f644571843bfba0f9bcd8943eae5e4e644ab4318f858c90c76aa924ce. Stop the container before attempting removal or force remove

直接删除容器会发现报容器正在运行的错误,这是守护进程的错误响应,所有删除容器前要先stop它,正确操作:

  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker stop affectionate_mccarthy
  2. affectionate_mccarthy
  3. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker rm affectionate_mccarthy
  4. affectionate_mccarthy
  5. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker ps
  6. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

三、Docker的使用

1.容器理解

docker run ubuntu:15.10 /bin/echo "Hello world"
  • docker: Docker 的二进制执行文件。
  • run:与前面的 docker 组合来运行一个容器。
  • ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
  • /bin/echo "Hello world": 在启动的容器里执行的命令

总体理解:

Docker以ubuntu15.10镜像创建一个新容器,然后在容器里执行/bin/echo "Hello world",然后输出结果

2.运行交互式的容器

我们通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力

  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker run -i -t ubuntu:15.10 /bin/bash
  2. root@797501dba5d9:/# . 此时我们已进入一个 ubuntu15.10系统的容器
  • -t:在新容器内指定一个伪终端或终端。
  • -i:允许你对容器内的标准输入 (STDIN) 进行交互。

我们尝试在容器中运行命令 cat /proc/versionls分别查看当前系统的版本信息和当前目录下的文件列表

  1. root@797501dba5d9:/# cat /proc/version
  2. Linux version 4.9.87-linuxkit-aufs (root@95fa5ec30613) (gcc version 6.4.0 (Alpine 6.4.0) ) #1 SMP Wed Mar 14 15:12:16 UTC 2018
  3. root@797501dba5d9:/# ls
  4. bin dev home lib64 mnt proc run srv tmp var
  5. boot etc lib media opt root sbin sys usr

我们可以通过运行exit命令或者使用CTRL+D来退出容器

3.启动容器(后台模式)

创建一个以进程方式运行的容器

  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker run -d ubuntu:15.10 /bin/sh -c "whiletrue;do echo hello world;sleep 1;done"
  2. dc858826f5c39a22b3682dcf29d8c29693a9047ac7edabad48e8c2d31b663fac

在输出中,我们没有看到期望的"hello world",而是一串长字符

dc858826f5c39a22b3682dcf29d8c29693a9047ac7edabad48e8c2d31b663fac

这个长字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么

  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. be78a31510d9 ubuntu:15.10 "/bin/sh -c 'while t…" 10 seconds ago Up 8 seconds nervous_khorana

CONTAINER ID:容器ID

NAMES:自动分配的容器名称

在容器内使用docker logs命令,查看容器内的标准输出

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker logs be78a31510d9

leiyuxingdeMacBook-Pro:~ leiyuxing$ docker logs nervous_khorana

结果都是:

  1. hello world
  2. hello world
  3. hello world
  4. hello world
  5. hello world

4.停止容器

  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker stop be78a31510d9
  2. be78a31510d9

  1. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker stop nervous_khorana
  2. nervous_khorana
  3. leiyuxingdeMacBook-Pro:~ leiyuxing$ docker ps
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

四、Docker容器的使用常遇问题及处理

Docker容器是一种轻量级的虚拟化技术,它可以提供一个独立的应用程序运行环境。虽然Docker容器在使用上非常便利,但是在运行过程中也会遇到一些问题。下面列举了一些常见的问题及处理方法。

1、容器启动失败

处理方法:可以通过docker logs命令查看容器的日志信息,从而找出容器启动失败的原因。常见的原因包括容器的配置有误、端口被占用等。

2、容器无法访问外部网络

处理方法:可以通过docker network命令查看容器所属的网络,并确认该网络是否允许访问外部网络。

3、容器文件系统读写权限问题

处理方法:可以通过docker run命令添加-v参数,将本地文件系统的目录映射到容器中,并赋予读写权限。

4、容器端口映射失败

处理方法:可以通过docker ps命令查看容器的端口映射情况,并确认主机端口是否被占用。

5、容器占用过多资源

处理方法:可以通过docker stats命令查看容器使用的资源情况,并根据需要对容器进行资源限制。

总之,在使用Docker容器时,应该及时查看日志、调整配置和限制资源使用等,以确保容器能够正常运行。

五、Docker容器的使用的注意点

使用Docker容器时需要注意以下几点:

  1. 镜像来源:确保选择可信的镜像源,避免使用未知来源或者不可靠的镜像。

  2. 容器网络:容器网络需要与宿主机器进行正确的互通设置。容器内可以使用标准的IP地址和端口号互相访问。

  3. 安全设置:容器需要正确设置安全隔离环境,限制容器的权限,避免容器内的安全漏洞对宿主机造成影响。

  4. 容器数据管理:容器中的数据需要进行备份,如果容器被删除,数据也会随之丢失。正确的数据备份可以避免数据丢失的风险。

  5. 容器监控:需要对容器进行监控,及时发现容器出现的问题。监控可以帮助运维人员快速发现并解决问题。

  6. 资源限制:容器可以使用不同的资源限制策略,以避免某些容器过多占用资源,导致性能问题。

  7. 应用程序管理:需要正确管理容器中的应用程序版本和配置,确保容器中的应用程序正确运行并能够满足业务需求。

  8. 生命周期管理:容器需要进行正确的生命周期管理,包括启动、停止、重启等操作,以确保容器能够正确地工作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/48831
推荐阅读
相关标签
  

闽ICP备14008679号