Docker学习四:容器

       Docker容器是镜像的一个运行实例,不同的是,它带有额外的可写文件层。如果认为虚拟机是模拟运行的一整套操作系统和跑在上边的应用。那么Docker容器就是独立运行的一个或一组应用,以及他们必需的运行环境。


一、创建容器

       1、新建容器。使用docker create命令新建一个容器:

[root@localhost ~]# docker create -it mytomcat:4.0
da84bcfe07be15092b711462990aae0371a703bfd8bbfb2e7d3a65e364279145

#查看创建的容器
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
da84bcfe07be        mytomcat:4.0        "/bin/bash"         30 seconds ago      Created                                       gigantic_bohr

        使用该命令创建的容器处于停止状态,可以使用docker start命令来启动它。


       2、新建并启动容器。启动容器有2种方法,一种是基于镜像新建一个容器并启动,另一个是将在终止状态的容器重新启动。命令是docker run,等价于先执行docker create,再执行docker start命令。

[root@localhost ~]#sudo docker run -it centos:7 /bin/bash
       docker run 命令启动容器时,后台运行的标准操作包括:

       检查本地是否存在指定镜像,不存在就从共有仓库下载;

       利用镜像创建并启动一个容器;

       分配一个文件系统,并在只读的镜像层外挂载一层作为只读层;

       从宿主机配置的网桥接口中桥接一个虚拟接口到容器中去;

       从地址池配置一个IP地址给容器;

       执行用户指定的应用程序;

       执行完毕后容器被终止。

       -t选项让Dcoker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。

[root@localhost ~]# docker exec -it da84bcfe07be /bin/bash
[root@da84bcfe07be /]# exit
       可以使用exit或者Ctrl+d命令来退出容器;如果不想退出运行的容器只是返回宿主机操作,可以使用

Ctrl+p和Ctrl+q来退出容器。


       3、守护态运行

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

[root@localhost ~]# sudo docker run -d mytomcat:4.0 /bin/bash
76c8b7c646ce11ab74bd92d192896ede37c386d229ef2ec82b8b60d29ca015fe
       容器启动后会返回一个唯一的ID,可以通过docker ps命令来查看容器信息。

[root@localhost ~]# sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
da84bcfe07be        mytomcat:4.0        "/bin/bash"         35 minutes ago      Up 2 seconds                            gigantic_bohr
       可以通过docker logs命令来获取容器输出信息。

[root@localhost ~]# sudo docker logs mytomcat


二、终止容器

       可以使用docker stop 来终止一个运行中的容器,命令格式为docker stop[-t|--time[=10]]。它会首先向容器发送SIGTERM信号,等待一段时间后(默认为10秒),再发送SIGKILL信号终止容器。

[root@localhost ~]# docker stop da84bcfe07be
da84bcfe07be
       注意:docker kill 命令会直接发送SIGKILL信号来强制终止容器。

       可以使用docker ps -a -q命令看到处于终止状态的容器ID。

[root@localhost ~]# docker ps -a -q
76c8b7c646ce
da84bcfe07be
753f856bca45
dc668d3265fd
       终止状态的容器可以使用docker start命令来重新启动容器,docker restart命令会将一个运行的容器终止并重新启动它。


三、进入容器

       1、attach命令

[root@localhost ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
da84bcfe07be        mytomcat:4.0        "/bin/bash"         About an hour ago   Up 5 seconds 
                           gigantic_bohr
[root@localhost ~]# docker attach da84bcfe07be
[root@da84bcfe07be /]# 

       当多个窗口同时attach到同一个容器的时候,所有窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法操作。


       2、exec命令

       Docker1.3版本起,提供exec命令,可以直接在容器内运行命令。

[root@localhost ~]# docker exec -it da84bcfe07be /bin/bash
[root@da84bcfe07be /]# 


四、删除容器

       使用docker rm命令来删除处于终止状态的容器。命令格式为docker rm[OPTIONS] CONTAINER [CONTAINER...]。支持的选项包括:

       -f,--forece=false强行终止删除一个运行中的容器。

       -l,--link=false删除容器的连接,但保留容器。

       -v,--vloumes=false删除容器挂载的数据卷。

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
76c8b7c646ce        mytomcat:4.0        "/bin/bash"         41 minutes ago      Exited (0) 11 minutes ago                       goofy_nobel
da84bcfe07be        mytomcat:4.0        "/bin/bash"         About an hour ago   Up 10 minutes                                   gigantic_bohr
753f856bca45        mytomcat:4.0        "/bin/bash"         31 hours ago        Exited (1) 8 hours ago                          sleepy_pike
dc668d3265fd        centos              "/bin/bash"         2 days ago          Exited (1) 32 hours ago                         logdata
[root@localhost ~]# docker rm 76c8b7c646ce
76c8b7c646ce
       删除一个运行中的容器,可以添加-f参数。Docker会发送SIGKILL信号给容器,终止其中的应用。

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
da84bcfe07be        mytomcat:4.0        "/bin/bash"         About an hour ago   Up 13 minutes                           gigantic_bohr
[root@localhost ~]# docker rm da84bcfe07be
Error response from daemon: You cannot remove a running container da84bcfe07be15092b711462990aae0371a703bfd8bbfb2e7d3a65e364279145. Stop the container before attempting removal or use -f
[root@localhost ~]# docker rm -f da84bcfe07be
da84bcfe07be

五、导入和导出容器

       1、导出容器

       导出容器是指导出一个已经创建的容器到一个文件,不管此时容器是否处于运行状态,可以使用docker export命令,该命令格式为docker export CONTAINER。

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
753f856bca45        mytomcat:4.0        "/bin/bash"         31 hours ago        Exited (1) 8 hours ago                        sleepy_pike
dc668d3265fd        centos              "/bin/bash"         2 days ago          Exited (1) 32 hours ago                       logdata
[root@localhost ~]# sudo docker export 753f856bca45 >mytomcat_4.0.tar
[root@localhost ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  mytomcat_4.0.tar  software  webapps

       可将这些文件传输到其他机器上,在其他机器上通过导入命令实现容器的迁移。


       2、导入容器

       导入容器可以使用docker import命令导入,称为镜像。








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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值