重起容器[root@docker01 ~]# docker restart test
test
进入容器
如果需要进入容器进行操作,推荐使用官方的attach或exec命令。
attach的命令格式为:
docker attach [--detach-key[=[]]] [--no-stdin] [--sig-proxy[=true]] CONTAINER
-detach-key[=[]] #指定退出attach模式的快捷键,默认是CTRL+p CTRL+q;
--no-stdin=true|false #是否关闭标准输入,默认是保持打开;
--sig-proxy=treu|false #是否代理收到的系统信号给应用程序,默认打开;
[root@docker01 ~]# docker run -itd ubuntu:18.04
b82dba0090bcb85fafdeef03e67f9973426965f2792efae73de1c07eb0b44bc2
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b82dba0090bc ubuntu:18.04 "/bin/bash" 52 seconds ago Up 50 seconds fervent_maxwell
[root@docker01 ~]# docker attach fervent_maxwell
root@b82dba0090bc:/#
exec是1.3.0 docker版本后提供的一个更方便的工具,可以在运行中容器内直接执行任何命令。
docker exec [-d|--detach] [--detach-keys[=[]]] [-i|--interactive] [--privileged] [-t|--tty] [-u|--user[=USER]] CONAINER COMMAND [ARG...]
-d #在容器中后台执行命令
--detach-keys=“ ” #指定容器切回后台的按键
-e #指定环境变量列表
-i #打开标准输入接受用户输入命令,默认为false
--privileged=treu|false #是否给执行命令以最高权限,默认false
-t #分配伪终端,默认false
-u #执行命令的用户名或ID
[root@docker01 ~]# docker exec -it f2554976971b /bin/bash
root@f2554976971b:/# w
08:02:18 up 2 days, 18:58, 0 users, load average: 0.03, 0.03, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root@f2554976971b:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:01 pts/0 00:00:00 /bin/bash
root 10 0 0 08:02 pts/1 00:00:00 /bin/bash
root 20 10 0 08:02 pts/1 00:00:00 ps -ef
此时会打开一个新的bash终端,不影响容器内其他应用的前提下,用户与容器进行交互。
删除容器
可是使用docker [container] rm命令来删除处于终止或退出状态的容器。docker [container] rm [-f|--force] [-l|--link] [-v|--volumes] CONTIAINER
-f #是否强制终止并删除一个运行中的容器
-l #删除容器的链接,但保留容器
-v #删除容器挂载的数据卷
查看处于停止状态的容器,并删除
[root@docker01 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f2554976971b ubuntu:18.04 "/bin/bash" 46 hours ago Up 46 hours focused_joliot
b82dba0090bc ubuntu:18.04 "/bin/bash" 47 hours ago Exited (0) 46 hours ago fervent_maxwell
[root@docker01 ~]# docker rm b82dba0090bc
b82dba0090bc
导出容器
用于将容器从一个系统迁移到另外一个系统,这时可以使用docker的导入和导出功能。
1、 导出容器是指,导出一个已经创建的容器到一个文件,不管此时容器是否处于运行状态。docker [container] export [-o|--output[=""]] CONTAINER
-o #指定导出的tar文件名,也可以直接通过重定向来实现
[root@docker01 docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f2554976971b ubuntu:18.04 "/bin/bash" 47 hours ago Up 47 hours focused_joliot
a5d805944192 ubuntu:18.04 "/bin/sh -c 'while t…" 2 days ago Exited (137) 2 days ago frosty_joliot
[root@docker01 docker]# docker export a5d805944192 > test_ubuntu2.tar
[root@docker01 docker]# docker export -o test_ubuntu.tar a5d805944192
[root@docker01 docker]# ls
test_ubuntu2.tar test_ubuntu.tar
导入容器
导出的文件可以使用docker [container] import 命令导入变成镜像。docker import [-c|--change[=[]]] [-m|--message[=MESSAGE]] file|URL| -[REPOSITORY[:TAG]]
-c #再倒入的同时执行对容器进行修改的Dockerfile指令
[root@docker01 docker]# docker import test_ubuntu.tar test111/ubuntu:v1.0
sha256:6c5cd99408ca4648c4d3e5560280e75633e3fbcfdba2778d1b69e4353fb27cc9
[root@docker01 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test111/ubuntu v1.0 6c5cd99408ca 13 seconds ago 64.2M
注:docker load和docker import区别在于容器快照(docker import)将丢弃所有的的历史记录和元数据信息,仅保存容器当时的快照状态。镜像存储文件(docker load)将保存完整记录,体积更大。
查看容器
1、查看容器详情,docker container inspect [OPTIONS] ONTAINER
[root@docker01 docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f2554976971b ubuntu:18.04 "/bin/bash" 47 hours ago Up 47 hours focused_joliot
[root@docker01 docker]# docker container inspect frosty_joliot
[
{
"Id": "a5d8059441922d3157d2af1d0ab0a724acf13fbe8bb60ddb92fa2536620c2f84",
"Created": "2020-03-05T05:50:37.692124654Z",
"Path": "/bin/sh",
"Args": [
"-c",
"while true;do echo hello;sleep 1;done"
],
"State": {
"Status": "exited",
查看某个容器的具体信息,会以json格式返回包括ID、创建时间、路径、状态、镜像、配置等在内的各项信息。
2、查看容器内的进程,docker [container] top [OPTIONS] CONTAINER,类似于linux的top命令,包括PID、用户、时间、命令等。必须是运行状态的容器才能查看
[root@docker01 docker]# docker top focused_joliot
UID PID PPID C STIME TTY TIME CMD
root 12365 12348 0 Mar05 pts/0 00:00:00 /bin/bash
root 12431 12348 0 Mar05 pts/1 00:00:00 /bin/bash
3、查看统计信息,docker [container] status [OPTIONS] [CONTAINER],会显示CPU、内存、存储、网络等使用情况的统计信息。
-a,--all #输出所有容器统计信息,默认仅在运行中
-format string #格式化输出信息
-no-stream #不持续输出,默认会自动更新持续实时结果
-no-trunc #不截断输出信息