Docker02-容器管理

Docker02-容器管理

在安装好docker引擎之后,启动docker服务。安装参考官网帮助文档【https://docs.docker.com/docker-for-mac/install/】

查看docker是否正常启动

docker info

如果返回类似如下输出,则说明docker服务正常。

Containers: 9
 Running: 0
 Paused: 0
 Stopped: 9
Images: 146
Server Version: 17.09.0-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
......

运行容器

使用docker run命令运行容器:

docker run -t -i ubuntu /bin/bash

-i :保证容器中的STDIN是开启的,让容器可以接受标准输入的字符

-t :为容器分配一个伪TTY终端,在控制台回显输出。-t 和 -i通常是成对出现的,实现容器的交互式shell,可合并简写为-ti。

ubuntu:镜像名称。

/bin/bash: 容器中运行的命令。

容器运行起来后,控制台就进入了容器的shell了:

root@8afa8dfa1abf:/# 

PS: 如果你本地没有ubuntu的lastest镜像,第一次运行时会从docker registry中拉取镜像,会等待一定的时间。

现在,你可以在容器中做各种操作,就像是在和一个真正的ubuntu系统交互一样。

比如,运行hostname命令,查看hosts文件, 查看容器中的进程等等。

root@8afa8dfa1abf:/# hostname
8afa8dfa1abf

root@8afa8dfa1abf:/# 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	8afa8dfa1abf

root@8afa8dfa1abf:/# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  18240  3364 pts/0    Ss   13:59   0:00 /bin/bash
root        13  0.0  0.0  34424  2808 pts/0    R+   14:07   0:00 ps -aux

最后,输入exit退出容器中的bash,一旦bash程序退出后,此时容器会停止。可以使用docker ps -a查看:

➜  ~ docker ps -a
CONTAINER ID        IMAGE                                                 COMMAND                  CREATED             STATUS                      PORTS               NAMES
8afa8dfa1abf        ubuntu                                                "/bin/bash"              10 minutes ago      Exited (0) 6 seconds ago                        admiring_banach

每个容器都是有唯一的名字的,如果docker run命令没有指定容器的名字,会自动生成一个随机的名称,这可能不是你想要的,可以使用–name参数来指定容器的名称。

docker run -ti --name ubuntu-container ubuntu /bin/bash

启动容器

如果一个容器当前在停止状态,可以使用docker start来重新启动这个容器

docker start ff70c91ddd44

我们有三中方式来指定容器:容器的短ID,长ID,容器名。上面的命令使用的是短ID。

所以,上面的重启命令等价于:

➜  ~ docker start  ubuntu-container
ubuntu-container

PS:在以后的示例中,均用容器名的这种方式。

通过docker start命令启动的容器,会沿用docker run指定的参数,因此ubuntu-container会运行一个交互式shell,那么如何进到这个交互式的shell中呢?可以通过docker attach命令来重新附着容器的会话上

➜  ~ docker attach ubuntu-container
root@ff70c91ddd44:/# 

PS: 输入完命令后,可能需要多按下回车才能进入。

守护式容器

除了运行交互式容器外,也可以运行守护式容器,这种容器会长期运行,适用于应用程序和服务,大多数时候我们运行的容器是守护式的。在运行容器时,通过-d来标识位守护式容器。

➜  ~ docker run --name daemon-container -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
3e94fd41798262678623e689eff3d9277814796812b96ba59e5a3ff4423e2cd1

容器中运行一个while循环,不断的输出hello world。

使用-d参数时,只会返回一个容器ID,不知道容器内部在干什么?怎么查看容器的日志输出?使用docker logs命令可获取容器内部的日志(标准输出、错误输出)

➜  ~ docker logs -f daemon-container
hello world
hello world
hello world
hello world
hello world

-f:监控日志,与tail -f类似。

如果想查看容器内运行的进程,可以使用docker top命令

➜  ~ docker top daemon-container
PID                 USER                TIME                COMMAND
8688                root                0:00                /bin/sh -c while true; do echo hello world; sleep 1; done
8982                root                0:00                sleep 1

统计信息

还可以使用docker stats命令显示容器的统计信息:

➜  ~ docker stats daemon-container
CONTAINER           CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
daemon-container    0.15%               604KiB / 2.934GiB   0.02%               1.43kB / 0B         32.8kB / 0B         2

容器中额外运行程序

如果想在一个运行中的容器中运行新的进程,可使用docker exec命令。

docker exec -d daemon-container touch /etc/new_config_file

这会以后台的方式在容器中创建一个新的文件。

我们可以使用交互式进入容器中:

➜  ~ docker exec -ti  daemon-container /bin/bash
root@3e94fd417982:/# ls /etc/new_config_file 
/etc/new_config_file
root@3e94fd417982:/# 

可以看到,上一个命令正常执行了。

停止容器

守护式容器需要通过docker stop命令来停止

➜  ~ docker stop daemon-container
daemon-container
➜  ~ docker ps -n 1
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
3e94fd417982        ubuntu              "/bin/sh -c 'while..."   11 minutes ago      Exited (137) 35 seconds ago                       daemon-container

命令docker ps -n x可以查看最后x个容器,不管容器是否在运行中。

查看容器详细信息

如果想查看容器的细节信息,可以使用docker inspect命令

 docker inspect daemon-container

输出一大坨东西:包括名称、ID、命令、网络、配置等等。

"Id": "3e94fd41798262678623e689eff3d9277814796812b96ba59e5a3ff4423e2cd1",
        "Created": "2019-10-15T14:27:01.0513945Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true; do echo hello world; sleep 1; done"
        ],
        .......

删除容器

如果容器没用了,使用docker rm命令删除

➜  ~ docker rm daemon-container
daemon-container

如果容器在运行中,docker rm 需要指定-f才能删除。

如果要删除所有容器,可以使用下面这个小技巧:

docker rm `docker ps -a -q`
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值