运行容器
命令格式:
1 | docker run [OPTIONS] IMAGE [COMMAND] [ARG...] |
OPTIONS说明:
- -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
- -d: 后台运行容器,并返回容器ID;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -P: 随机端口映射,容器内部端口随机映射到主机的高端口
- -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- –name=”my-ubuntu”: 为容器指定一个名称;
- –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
- –dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
- -h “mars”: 指定容器的hostname;
- -e username=”charlie”: 设置环境变量;
- –env-file=[]: 从指定文件读入环境变量;
- –cpuset=”0-2” or –cpuset=”0,1,2”: 绑定容器到指定CPU运行;
- -m :设置容器使用内存最大值;
- –net=”bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
- –link=[]: 添加链接到另一个容器;
- –expose=[]: 开放一个端口或一组端口;
- –restart 容器退出时要应用的重启策略。
运行命令:
启动一个ubuntu容器docker run -i -t ubuntu
,如果本地没有镜像会先去下载,然后再启动
1 | [root@izur9gz docker]# docker run -i -t ubuntu /bin/bash |
在这个容器中运行的ubuntu可以像一个正常的ubuntu系统一样运行,可以在里面做任何事情,比如安装个vim软件
1 | root@97e685431765:/# apt update |
当你想退出这个ubuntu命令行界面只需要输入exit就返回到原来状态了,容器也会随之关闭
1 | root@97e685431765:/# exit |
列出容器
命令格式
1 | docker ps [OPTIONS] |
OPTIONS说明:
- -a :显示所有的容器,包括未运行的;
- -f :根据条件过滤显示的内容;
- –format :指定返回值的模板文件;
- -l :显示最近创建的容器;
- -n :列出最近创建的n个容器;
- –no-trunc :不截断输出;
- -q :静默模式,只显示容器编号;
- -s :显示总的文件大小。
运行命令:
承接上文测试内容,没有正在运行的容器,有一个未运行的容器,容器名字叫“pedantic_snyder”这是启动之后docker自动起得容器名字
1 | [root@izur9gz docker]# docker ps |
容器命名
前文的运行容器命令中有个参数--name
是用来起名字的,这里也特地说下,命名只能有下划线_
,圆点·
,横线-
三种特殊符号 运行命令: 启动个ubuntu容器然后命名为Charlie-ubuntu,退出容器命令行,然后看生成了一个名为Charlie-ubuntu的容器
1 | [root@izur9gz docker]# docker run --name Charlie-ubuntu -i -t ubuntu /bin/bash |
容器启动
命令格式:
1 | docker start [OPTIONS] CONTAINER [CONTAINER...] |
OPTIONS说明:
- –attach , -a:Attach STDOUT/STDERR and forward signals
- –interactive , -i:Attach container’s STDIN
运行命令:
可以启动一个或多个,启动可以用CONTAINER ID也可以用NAMES
1 | [root@izur9gz docker]# docker ps -a |
容器停止
命令格式:
1 | docker stop [OPTIONS] CONTAINER [CONTAINER...] |
OPTIONS说明:
- -t int:在杀死容器之前等待停止的秒数,默认10秒
运行命令:
停止名为Charlie-ubuntu容器
1 | [root@izur9gz docker]# docker stop Charlie-ubuntu |
容器重启
命令格式:
1 | docker restart [OPTIONS] CONTAINER [CONTAINER...] |
OPTIONS说明:
- -t int:在杀死容器之前等待停止的秒数,默认10秒
运行命令:
重启名为Charlie-ubuntu容器
1 | [root@izur9gz docker]# docker restart Charlie-ubuntu |
连接到正在运行中的容器
命令格式:
1 | docker attach [OPTIONS] CONTAINER |
运行命令:
跟run命令-i -t效果相同,exit退出会停止容器
1 | [root@izur9gz docker]# docker attach Charlie-ubuntu |
后台运行容器
前文提到的run
命令的-d
参数表示后台运行容器,并返回容器ID; 后台运行一个ubuntu的容器,里面每隔一秒打印一次hello world
1 | [root@izur9gz docker]# docker run --name Charlie2-ubuntu -d ubuntu /bin/bash -c "while true;do echo hello world;sleep 1;done" |
获取容器的日志
命令格式:
1 | docker logs [OPTIONS] CONTAINER |
OPTIONS说明:
- -f : 跟踪日志输出
- –since :显示某个开始时间的所有日志
- -t : 显示时间戳
- –tail :仅列出最新N条容器日志
运行命令:
前文有个每秒打印一次hello world
的ubuntu容器,查看这个容器后五条日志
1 | [root@izur9gz docker]# docker logs --tail 5 Charlie2-ubuntu |
查看容器中运行的进程信息
命令格式:
1 | docker top [OPTIONS] CONTAINER [ps OPTIONS] |
运行命令:
1 | [root@izur9gz docker]# docker top Charlie2-ubuntu |
在运行的容器中执行命令
命令格式:
1 | docker exec [OPTIONS] CONTAINER COMMAND [ARG...] |
OPTIONS说明:
- -d :分离模式: 在后台运行
- -i :即使没有附加也保持STDIN 打开
- -t :分配一个伪终端
运行命令:
先后台运行创建一个newFile文件,然后进入终端查看,exit不会停止容器
1 | [root@izur9gz docker]# docker exec -d Charlie-ubuntu touch ~/newFile |
重启策略
run
命令的参数--restart
有四种策略
策略
用途
no
默认策略,退出时不要自动重新启动容器。
on-failure[:max-retries]
指定退出时尝试重启的次数
unless-stop
始终重新启动容器,但是如果容器正常stopped,然后机器重启或docker服务重启,这种情况下容器将不会被restart
always
无论退出状态如何,始终重新启动容器。当您指定always时,docker守护进程将尝试无限期地重新启动容器。无论容器的当前状态如何,容器也将始终在守护进程启动时启动
运行命令:
运行redis如果退出会尝试启动三次
1 | docker run --restart=on-failure:3 redis |
获取容器详细信息
命令格式:
1 | docker inspect [OPTIONS] NAME|ID [NAME|ID...] |
OPTIONS说明:
- -f :指定返回值的模板文件。
- -s :显示总的文件大小。
- –type :为指定类型返回JSON。
运行命令:
回去容器名为Charlie-ubuntu的详情,然后获取详情中的ip地址信息
[root@izur9gz docker]# docker inspect Charlie-ubuntu
[
{
"Id": "c9c17b86b97e9528535abd1ffce67945442ca985b91ce3dff3ac4fa82e5e2025",
"Created": "2019-05-22T08:27:53.091120726Z",
···
···
···
},
"NetworkSettings": {
···
···
···
"IPAddress": "172.17.0.4",
···
···
···
}
}
}
]
[root@izur9gz docker]# docker inspect --format '{ {.NetworkSettings.IPAddress}}' Charlie-ubuntu
172.17.0.4
删除容器
命令格式:
1 | docker rm [OPTIONS] CONTAINER [CONTAINER...] |
运行命令:
1 | [root@izur9gz docker]# docker ps -a |