ralph的云计算之路--- docker篇章04--Docker容器管理

本文详细介绍了Docker容器的管理方法,包括容器的启动、停止、删除、端口映射等操作,以及如何通过不同命令进入容器进行交互,是Docker用户必备的实践指南。

Docker 容器管理

docker 容器

  • 容器是独立运行的一个或一组应用,及他们的运行环境。
  • 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状(stopped)的容器重新启动。
  • 因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。
    容器默认关闭就死掉了

docker 容器管理命令实践

  1. 新建容器并启动
[root@localhost ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              43c3475f88f4        8 minutes ago       0 B
ralph/nginx         latest              8eed31b6faa7        16 minutes ago      126 MB
docker.io/nginx     latest              ab56bba91343        11 days ago         126 MB
docker.io/centos    latest              67fa590cfc1c        4 weeks ago         202 MB
[root@localhost ~]# docker run nginx /bin/echo "ralph"     
ralph  #创建一个容器执行一条输出“ralph的命令”之后就是死亡
[root@localhost ~]# docker ps -a  (-a 显示所有的容器)
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
7005896ea8b6        nginx               "/bin/echo ralph"   17 seconds ago      Exited (0) 16 seconds ago                         jolly_ramanujan
5f4b5d05a5c6        ralph/nginx         "/bin/bash"         13 minutes ago      Up 13 minutes                 80/tcp              happy_lumiere
76e2ef67bd36        docker.io/nginx     "/bin/bash"         18 minutes ago      Exited (130) 13 minutes ago                       eager_volhard
e0d88df55197        docker.io/nginx     "sh"                19 minutes ago      Exited (127) 18 minutes ago                       gifted_kirch

#启动一个 bash 终端,允许用户进行交互。

[root@localhost ~]# docker run --name=mynginx -it nginx /bin/bash
root@721a8c893800:/# ls
bin  boot  dev	etc  home  lib	lib64  media  mnt  opt	proc  root  run  sbin  srv  sys  tmp  usr  var
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
721a8c893800        nginx               "/bin/bash"         56 seconds ago      Up 56 seconds       80/tcp              mynginx

  • –name:给容器定义一个名称
  • -i:则让容器的标准输入保持打开。
  • -t:让 Docker 分配一个伪终端,并绑定到容器的标准输入上
  • /bin/bash:执行一个命令

当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:

  1. 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  2. 利用镜像创建并启动一个容器
  3. 分配一个文件系统,并在只读的镜像层外面挂在一层可读写层
  4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  5. 从地址池配置一个 ip 地址给容器
  6. 执行用户指定的应用程序
  7. 执行完毕后容器被终止
  8. 启动已终止容器

[root@docker ~]# docker ps -a
[root@docker ~]# docker start 6d8c8b3de337
[root@docker ~]# docker ps -a #查看是否启动
在这里插入图片描述

守护进程运行

更多的时候,需要让 Docker 容器在后台以守护形式运行。此时可以通过添加-d参数来实现。

[root@localhost ~]# docker run -d nginx /bin/bash -c "while true; do echo ralph;sleep 1;done"
77e49a25a28fb42a79792ce26003ef4a6121cf0ca62cc914a3d8920bfa538d11
[root@localhost ~]# docker ps #查看正在运行的 docker 容器
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
77e49a25a28f        nginx               "/bin/bash -c 'whi..."   6 seconds ago        Up 5 seconds        80/tcp              gifted_poitras
615f6c8e4c30        nginx               "/bin/bash -c 'whi..."   About a minute ago   Up About a minute   80/tcp              cranky_babbage
[root@localhost ~]# docker logs 77e49a25a28f #获取容器输出信息,通过 dockerlogs 命令
ralph
ralph
ralph
ralph
ralph
ralph
ralph
ralph
ralph
ralph
ralph
ralph
ralph
ralph
ralph
ralph
ralph
ralph


PS:

  1. 镜像跑起来就是容器!
  2. docker ps -a 查看容器 可以看到ID !
  3. [root@localhost ~]# docker container ps
  4. docker runc 是docker 一种运行环境

停止容器

可以使用 docker stop 来终止一个运行中的容器。
此外,当 Docker 容器中指定的应用终结时,容器也自动终止。例如启动一个终端的容器,用户通过 exit 命令或者 ctrl+d 来退出终端时,所创建的容器立刻终止。
[root@docker ~]# docker ps -a
极端方式停止容器(不推荐)
#列出所有启动容器的 ID
[root@docker ~]# docker ps -a -q
#批量杀掉启动的容器
[root@docker ~]# docker kill $(docker ps -a -q)
ctrl+p+q 退出时容器不停止
[root@docker ~]# docker start 6d8c8b3de337
[root@docker ~]# docker attach 6d8c8b3de337 #直接运行
[root@6d8c8b3de337:/# # ctrl+p+q 退出

删除容器

[root@docker ~]# docker ps -a
[root@docker ~]# docker rm c599b569f387 删除已经停止的容器
[root@docker ~]# docker rm -f 302f39c202c9 删除正在运行的容器

进入容器

使用-d 参数时,容器启动后会进入后台。某些时候需要进入容器进行操作,有很多种方法,包括使用 docker attach 命令

  1. attach 命令
[root@docker ~]# docker run -dit centos
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
8c6c36796748 centos "/bin/bash" 10 seconds ago Up 9 seconds
eager_ramanujan
#通过 docker attach 进入
[root@docker ~]# docker attach 8c6c36796748
root@8c6c36796748 /]#

2.exec

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
6b04d76e32e3        nginx               "nginx -g 'daemon ..."   3 minutes ago       Exited (0) 39 seconds ago                       eager_davinci
[root@localhost ~]# docker start 6b04d76e32e3
6b04d76e32e3
[root@localhost ~]# docker exec -it 6b04d76e32e3 /bin/bash
root@6b04d76e32e3:/# 

端口映射:宿主机的 8888 端口映射到容器 nginx 的 80 端口

在 windows 上用访问 linux 宿主机 http://你的宿主机IP:8888 访问容器

[root@localhost ~]# docker run -dit nginx
3a142a0759232d3bed327218c6f7d52987417f5de10ce027c89265539e96952f
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
3a142a075923        nginx               "nginx -g 'daemon ..."   5 seconds ago       Up 5 seconds        80/tcp              dreamy_haibt
[root@localhost ~]# curl 172.17.0.2
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@localhost ~]# docker run -dit -p 8888:80 nginx  
#前面是宿主机的端口 后面是容器的端口
f00eed1db06cf00e2d56dc100a19764d625fffc6332d0436d050a0db734b3123
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
f00eed1db06c        nginx               "nginx -g 'daemon ..."   5 minutes ago       Up 5 minutes        0.0.0.0:8888->80/tcp   sad_keller
3a142a075923        nginx               "nginx -g 'daemon ..."   6 minutes ago       Up 6 minutes        80/tcp                 dreamy_haibt


小主的宿主机IP就是192.168.92.218
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值