Docker三大核心组件——容器(Container)

一.创建容器

1.新建容器

使用 docker create命令新建一个容器

例如:

docker@box:/home/box$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
docker@box:/home/box$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED             SIZE
test         01        d462dfcb371e   About an hour ago   72.8MB
ubuntu       20.04     ba6acccedd29   4 days ago          72.8MB
tomcat       latest    4ce9babdd885   6 days ago          680MB


docker@box:/home/box$ docker create -it ubuntu:20.04
4533c24246aff352107cd6465e081d23ea2e027b9876e6772e1dca346b36f95c


docker@box:/home/box$ docker ps -a
CONTAINER ID   IMAGE          COMMAND   CREATED          STATUS    PORTS     NAMES
4533c24246af   ubuntu:20.04   "bash"    17 seconds ago   Created             elastic_rosalind

2.启动容器

使用docker start 命令来启动一个已经创建的容器

docker@box:/home/box$ docker start 4533c24246af

docker@box:/home/box$ docker ps -a

 使用docker restart命令来重启容器

3.新建并启动容器

除了创建容器后通过docker start 命令来启动,还可以直接新建并启动容器。命令为docker run

docker@box:/home/box$ docker run ubuntu:20.04 /bin/echo 'hello world'
hello world

docker@box:/home/box$ docker run -it ubuntu:20.04 /bin/bash
root@8e38f09924a8:/# pwd
/
root@8e38f09924a8:/# ls
bin   dev  home  lib32  libx32  mnt  proc  run   srv  tmp  var
boot  etc  lib   lib64  media   opt  root  sbin  sys  usr
root@8e38f09924a8:/# exit
exit

4.守护态运行

添加参数-d参数实现容器在后台以守护态(Daemonized)形式运行。

docker@box:/home/box$ docker run -d ubuntu:20.04 /bin/bash -c "while true;do echo hello world ; sleep 1;done"
941fd6ad41ee7f5f7802011835859264cccf9c3306890783be4e13f602883912
docker@box:/home/box$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS     NAMES
941fd6ad41ee   ubuntu:20.04   "/bin/bash -c 'while…"   15 seconds ago   Up 13 seconds             amazing_wilbur

获取容器的输出信息,可以使用docker logs命令 

docker logs 941fd6ad41ee

二.终止容器

可以使用docker stop命令终止一个运行中的容器

首先向容器放松SIGTERM信号,等待一段超时时间(默认10秒)后,在发送SIGKILL信号来终止容器。

docker stop 941fd6ad41ee

注意:docker kill命令会直接发送SIGKILL信号来强行终止容器。

此外,当docker容器中的指定应用终止时,容器也会自动终止。例如只启动一个终端的容器,用户通过exit命令或Ctrl+d来退出终端时,所创建的容器立刻终止,处于stopped状态。

三.进入容器

使用-d参数时,容器启动后会进入后台,用户无法看到容器的信息,也无法进行操作。这时候如果需要进入容器进行操作,有多种方式如官方的attach和exec命令,第三方的nsenter工具

docker@box:/home/box$ docker run -itd ubuntu:20.04
7de78b3fc9f8cc92591612f51d186f2a49016dcdd5812c4f202d9d7e8e740b67

1.attach

进入容器:docker attach interesting_payne

 

 当多个窗口同事用attach命令连到同一容器时,所有窗口会同步显示,当某个窗口阻塞时,其他窗口也无法执行操作了。

2.exec

可以在容器内直接执行任意命令,例如进入刚创建的容器中,并启动一个bash,通过指定-it参数来保持标准输入打开,并分配一个伪终端,通过exec命令对容器进行操作时最为推荐的方式。

docker@box:/home/box$ docker exec -it 7de78b3fc9f8 /bin/bash
root@7de78b3fc9f8:/# 

3.nsenter

四.删除容器

可以使用docker rm 命令来删除处于终止或退出状态的容器

如果要直接删除一个运行中的容器,可以添加-f参数。 

五.导入和导出容器

某些时候,需要将容器从一个系统迁移到另外一个系统,此时可以使用docker的导入导出功能。

1.导出容器

导出容器是指导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态,可以使用docker export命令,可以通过-o选项指定导出的tar文件名,也可以直接通过重定向来实现。

可将导出的tar文件传输到其他机器上,通过导入命令导入到系统中,从而实现容器的迁移

2.导入容器

导出的容器可以通过docker import命令导入变成镜像,与docker load导入镜像十分类似。

两者区别在于容器快照文件将丢弃所有的历史记录和元数据(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积更大。此外,从容器快照文件导入时可以重新指定标签等元数据信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值