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