ralph的云计算之路--- docker篇章04--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 #查看是否启动
ralph的云计算之路--- docker篇章04--Docker容器管理_第1张图片

守护进程运行

更多的时候,需要让 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



Welcome to nginx!



Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

[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
ralph的云计算之路--- docker篇章04--Docker容器管理_第2张图片

你可能感兴趣的:(docker)