首页 > 其他 > 详细

Docker使用容器

时间:2019-02-22 15:04:10      阅读:192      评论:0      收藏:0      [点我收藏+]

Docker使用容器

docker安装完成之后可以使用docker info命令查看dcoker是否正常,使用docker info命令会返还所有容器和镜像的数量、docker使用的执行取得和存储驱动以及docker的基本配置。

运行一个容器

技术分享图片

可以看到容器运行是基于镜像的,执行docker run -i -t ubuntu /bin/bash命令后先去本地找ubtunru镜像没找到,然后去镜像仓库拉取镜像。拆分来看可以分为两步:docker pull ubuntudocker run -i -t ubuntu /bin/bash

这里执行docker run命令指定-i和-t两个参数,-i标志保证容器中STDIN是开启的,持久的标准输入是交互式shell的“半边天”, -t标志则是另外“半边天”,它告诉Docker为要创建的容器分配一个伪tty终端,这样新建的容器才能提供一个交互式shell。最后的/bin/bash是指定在容器运行/bin/bash命令启动一个bash shell。

使用容器

  • 检查容器主机名

    root@31f246585bb5:/# hostname 
    31f246585bb5
  • 检查容器/etc/hosts文件

    root@31f246585bb5:/# cat /etc/hosts 
    127.0.0.1 localhost
    ::1   localhost ip6-localhost ip6-loopback
    fe00::0   ip6-localnet
    ff00::0   ip6-mcastprefix
    ff02::1   ip6-allnodes
    ff02::2   ip6-allrouters
    172.17.0.2    31f246585bb5
    
  • 安装软件包查看(net-tools和iproute2)网络

    最开始执行apt-get install net-tools遇到报错:Unable to locate package, 这是因为Docker 镜像在制作时为了精简清除了apt仓库信息,执行apt-get update命令来更新仓库信息然后安装即可。
    
    apt-get update
    apt-get install net-tools iproute2
    
    root@31f246585bb5:/# ip add
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
    6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
        link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
        inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
           valid_lft forever preferred_lft forever
    

容器命名

使用docker ps -a可以查看所有运行状态和未运行状态的所有容器。Docker会为创建的容器自动生成一个随机的名称。如果不想使用自动生成的名称,可以使用--name标志实现。

[root@localhost yum.repos.d]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
31f246585bb5        ubuntu              "/bin/bash"         35 minutes ago      Exited (0) 12 seconds ago                       adoring_ellis

[root@localhost yum.repos.d]# docker run  --name flow_contianer -i -t ubuntu /bin/bash

使用容器自定义名称更利于管理容器,值得注意的是,容器的命名必须是唯一的,如果试图创建两个名称相同的容器,则命令将会失败。如果要使用的容器名称已存在,可以先用docker rm命令删除已有的同名容器再创建。

除此之外还可以使用docker rename 原容器名 新容器名来重命名容器名称。

重新启动已停止的容器

使用命令docker start 容器名称/容器ID来启动已经停止运行的容器。也可以使用docker restart 容器名称/容器ID来重启一个容器。

# 运行已停止的容器
[root@localhost yum.repos.d]# docker start 31f246585bb5
31f246585bb5
# 查看正在运行的容器
[root@localhost yum.repos.d]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
31f246585bb5        ubuntu              "/bin/bash"         2 hours ago         Up 7 seconds                            adoring_ellis
# 交互式进入容器shell
[root@localhost yum.repos.d]# docker exec -it 31f246585bb5 /bin/bash
root@31f246585bb5:/#

docker attach

Docker容器重新启动的时候,会沿用docker run命令时指定的参数来运行,因此容器重新启动后悔运行一个交互式会话shell,使用docker attach可以重新附着到容器的会话上。但是使用这种方式exit之后容器会停止运行。

[root@localhost yum.repos.d]# docker attach 31f246585bb5
root@31f246585bb5:/# exit
exit
[root@localhost yum.repos.d]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

创建守护式容器

除了创建交互式运行的容器(interactive container), 也可以创建长期运行的容器。守护式容器(daemonized container)没有交互式会话,非常适合运行应用程序和服务。大多数时候我们都需要以守护式方式来运行我们的容器。

[root@localhost yum.repos.d]# docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
48aaf822792dff2af594f0148dbe9107349fd311a682287498bc4c2546b8e98e

[root@localhost yum.repos.d]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
48aaf822792d        ubuntu              "/bin/sh -c 'while t…"   15 seconds ago      Up 3 seconds                            daemon_dave

[root@localhost yum.repos.d]# docker exec -it 48aaf822792d /bin/bash
root@48aaf822792d:/# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.9  0.0   4616   692 ?        Ss   05:24   0:00 /bin/sh -c while true; do echo hello world; sleep 1; done
root         62  9.8  0.2  18496  2032 pts/0    Ss   05:25   0:00 /bin/bash
root         76  0.0  0.1  34388  1496 pts/0    R+   05:25   0:00 ps -aux
root         77  0.0  0.0   4520   380 ?        S    05:25   0:00 sleep 1

这里docker run -d选项会将容器放到后台执行并返回容器ID。

这个守护式容器内部在干些什么?可以使用docker logs命令来获取容器的日志

[root@localhost yum.repos.d]# docker logs daemon_dave
hello world
hello world
hello world
hello world
hello world
...

# 可以使用docker logs -f daemon_dave来动态监控docker日志
[root@localhost yum.repos.d]# docker logs -f daemon_dave

# 和tail命令类似,也可以直接跟踪容器日志的片段,例如获取日志最后10行内容:
docker logs --tail 10 daemon

# 跟踪容器最新日志而不必读取整个日志文件
docker logs --tail 0 -f daemon_dave

# 查看容器内所有进程
docker top daemon_dave

在宿主机里的/var/lib/docker/containers/容器ID/容器ID-json.log就是容器日志输出路径,不过这个在容器运行起来id是不同的,如果需要用到Logstash去收集日志建议采用输出到容器内固定目录然后在通过-V挂载出来到宿主机里。

docker统计信息

使用docker top 容器名/容器ID可以查看进程信息,使用docker stats则可以查看所有容器的CPU、内存、网络IO及存储IO的性能和指标。

[root@localhost yum.repos.d]# docker stats
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
48aaf822792d        daemon_dave         5.17%               212KiB / 974.6MiB   0.02%               648B / 0B           0B / 0B             2

停止守护式容器

docker stop 容器名/容器ID

查看容器详细信息

docker inspect 容器名/容器ID

除了docker inspect 查看外,还可以浏览宿主机/var/lib/docker/container/目录下去了解docker工作原理。

删除容器

docker rm 容器名/容器ID

# 强制删除,不管容器运行与否
docker rm -f 容器名/容器ID

# 删除所有容器快捷命令(docker -q只返回容器ID)
docker rm `docker ps -a -q`

Docker使用容器

原文:https://www.cnblogs.com/liao-lin/p/10418407.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!