docker-容器

docker三大核心概念:仓库、镜像、容器
容器是一个可运行的实例,来自于不可读写的镜像。如果说虚拟机是一套完整的操作系统,和抛在上面的应用,那么docker容器就是一个能独立运行的应用和环境。

创建容器

# docker create  -it centos:new (可以是id或tag)
0cfa01f903624613581413910eed796f111287520311e2284c8c00ef27ce3a23

# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
0cfa01f90362        centos:new          "/bin/bash"         46 seconds ago      Created                                        prickly_sinoussi

-i 参数让docker分配一个伪终端并绑定到容器的stdin,-t则让容器的stdin保持开启。此命令创建的容器处于停止状态。

启动容器

使用docker start <id/tag>启动容器。

#docker sart 0c
0c

# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
0cfa01f90362        centos:new          "/bin/bash"         About a minute ago   Up 2 seconds                            prickly_sinoussi

上面的过程比较繁琐,可以一键创建并运行
用以下命令输出一个“hello”并退出容器:

# docker run centos /bin/echo "hello"

 hello 

和本地执行/bin/echo 'hello'一样。

利用docker run创建容器的时候,后台的执行顺序:

  • 检查本地是否有指定镜像,没有就下载
  • 利用镜像创建容器,并启动容器
  • 分配一个文件系统给容器,并在只读的镜像层外挂在一层可读写层
  • 从宿主机网桥接口中桥接一个虚拟接口到容器中
  • 从网桥的地址池配置一个ip给容器
  • 执行用户的命令
  • 执行完自动终止容器

那么怎样创建一个保持开启的容器呢?

下面的命令启动一个bash终端,并允许用户交互:

# docker run -it centos /bin/bash
[root@a95912722aa0 /]# 

在此模式下,用户可以进行命令交互:

[root@a95912722aa0 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

[root@a95912722aa0 /]# ps
   PID TTY          TIME CMD
     1 ?        00:00:00 bash
    15 ?        00:00:00 ps

在这个容器中,只运行了bash,不会运行其他无关程序。

用户可以按Ctrl+D或者输入exit来退出容器。

当容器退出后,容器就从运行状态进入停止状态,因为容器运行的意义就是跑应用,停止应用就等于停止容器。

那如果我要创建一个容器,持续运行某个应用,怎么办?
让容器处于daemon状态,需要用-d参数:

# docker run -dit centos /bin/bash 
addac53c53c7242e9094dd8b77931f1a385f8c14225a055f414da0fc6ba47510

# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
addac53c53c7        centos              "/bin/bash"         About a minute ago   Up About a minute                       lonely_perlman

可以看到,这容器已经在后台运行了,那要怎么样进入这个容器中呢?
后面会说到。

进入容器

上面创建的daemon容器,用户无法直接看到容器的输出信息,那么就得进入容器,有2种方法:
attach
attach是docker自带的命令,格式为:docker attach CONTAINER

# docker attach add
[root@addac53c53c7 /]#  

exec命令(推荐)
此命令可以进入容器并执行命令,例如进入到刚刚创建的容器中,启动一个python界面:

# docker exec -it add /usr/bin/python
Python 2.7.5 (default, Nov  6 2016, 00:28:07) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

退出当前应用就退出了容器,但是因为容器是一个daemon形式,所以查看docker ps:

# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
addac53c53c7        centos              "/bin/bash"         46 minutes ago      Up 4 minutes                            lonely_perlman

它还是以bash的初始状态运行着。

容器停止、删除操作

经过上面的操作,其实很容易推出以下命令:

docker stop <id>  # 容器停止 
docker restart <id> #容器重启
docker rm <id> #容器删除(必须在容器停止之后)

这些都是基本格式,其中的参数当时用到了可以再查。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值