三、docker容器

概念

《Docker — 从入门到实践》介绍:

  • 容器是独立运行的一个或一组应用,以及它们的运行态环境
  • 虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境) 和跑在上面的应用

命令说明

docker命令帮助: docker --help

用法:  docker [OPTIONS] COMMAND

具体某个COMMAND的用法可以进一步help:  docker COMMAND --help

所以此处不会一一列举所有的相关命令

启动容器

镜像是固定不变的模板,容器是在镜像基础上面的增量,同一个镜像创建出来的多个容器共用一个镜像,维护各自的增量

基于镜像新建一个容器并启动

1.下载一个镜像(镜像部分再介绍)

$ docker pull centos

2.新建容器并启动

docker run [OPTIONS] 镜像名:tag [COMMAND] [ARGS]

$ docker run centos /bin/echo "hello world"
输出:hello world

以上命令仅输出了hello world,该容器的使命便结束了。并没有像我期待的那样,进行centos的系统。原因是概述里说的那样,docker运行的是一个或一组应用,以及他的环境。以上命令创建了centos容器,但是执行的命令为“ /bin/echo "hello world"”,当执行完时,这个容器的使命就结束了,进程便退出了。故如果想要容器长久的运行,【COMMADN】执行的任务必须永久存活。

又如反例:【COMMAND】为service xxx start,虽然启动的服务是后台,但是docker执行完“service xxx start”就没事干了,容器便退出,导致即使xxx后台运行,但是容器退出,任务服务也就消失殆尽。

 

先介绍下docker run常用的OPTIONS

  • --name  :新创建的容器指定一个名字
  • -d:  后台运行容器
  • -it:以交互的模式前台运行容器
  • -p:  本地主机端口映射到容器端口,如 -p 8081:8080

启动centos容器

方式一:
$ docker run -it --name myContainer centos /bin/bash

方式二(后台运行):
$ docker run -itd --name myContainer centos /bin/bash

启动一个之前退出运行的容器(启动后后台运行)

$ docker start 容器名/id

查看容器

docker ps [OPTIONS]  

OPTIONS:

  • -a: 列出所有容器(默认仅列出运行中的容器)
  • -q: 仅展示容器id
  • -l: 仅列出最近创建的一个容器
  • -n: 列出最近创建的n个容器

关闭容器

docker stop 容器名/id

docker kill 容器名/id (强制关闭)

在容器内部:

exit 或快捷键ctrl+d   退出并关闭容器

ctrl+p+q快捷键   退出容器,但不关闭容器

重启容器

docker restart 容器名/id

进入容器

方式一:

docker attach 容器名/id

方式二(推荐使用):

docker exec -it 容器名/id  /bin/bash

推荐使用的原因:使用该方式,在容器内exit命令只退出容器,不关闭容器。

attach、exec执行时主机启动都会启动一个进程去连接容器,不同的是attach多个进程连接的是同一个容器交互终端(容器启动时),在一个attach的操作,会同步到其他的attach连接。所以容器内执行exit,因为交互终端断开而容器将关闭。而exec连接容器的交互终端是各自新创建的,执行exit时仅退出各自的终端,对其他的没影响,则不会关闭容器。

docker exec也可以在主机执行容器内部的命令:docker exec -it 容器名/id  ls -l  (此处ls -l将输出容器内部)

导出/导入容器快照

导出:docker export 容器id > filename.tar

导入(导入为镜像): cat filename.tar | docker import - test/importImage:tag 

删除容器

docker rm 容器ID   

docker rm -f 容器ID (强制删除启动中的) 

docker rm -f $(docker ps -a -q)  删除所有容器

docker container prune  删除所有关闭状态的容器

其他命令

查看容器内运行的进程:docker top 容器id

查看容器信息(如容器分配的ip、卷等):docker inspect 容器id

查看容器输出日志: docker logs -f -t --tail 容器id

拷贝本地文件到容器中:docker cp 本地文件名全路径  容器id:容器目录

拷贝容器中的文件到本地:docker cp 容器id:文件全路径  本地目录

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值