容器生命周期管理
docker run :创建一个新的容器并运行一个命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
:::success
OPTIONS说明:- -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
- -d: 后台运行容器,并返回容器ID;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -P: 随机端口映射,容器内部端口随机映射到主机的端口
- -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- —name=”nginx-lb”: 为容器指定一个名称;
- —dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
- —dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
- -h “mars”: 指定容器的hostname;
- -e username=”ritchie”: 设置环境变量;
- —env-file=[]: 从指定文件读入环境变量;
- —cpuset=”0-2” or —cpuset=”0,1,2”: 绑定容器到指定CPU运行;
- -m :设置容器使用内存最大值;
- —net=”bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
- —link=[]: 添加链接到另一个容器;
- —expose=[]: 开放一个端口或一组端口;
- —volume , -v: 绑定一个卷
:::
:::color3
使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /datadocker run -p 80:80 -v /data:/data -d nginx:latest
:::
docker rm :删除一个或多个容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
:::success
OPTIONS说明:- -f :通过 SIGKILL 信号强制删除一个运行中的容器。
- -l :移除容器间的网络连接,而非容器本身。
- -v :删除与容器关联的卷。
:::
:::color3
强制删除容器 db01、db02:docker rm -f db01 db02
docker rm -l db
docker rm -v nginx01
docker rm $(docker ps -a -q)
:::
docker exec :在运行的容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
:::success
OPTIONS说明:- -d :分离模式: 在后台运行
- -i :即使没有附加也保持STDIN 打开
- -t :分配一个伪终端
:::
:::color3
在容器 mynginx 中开启一个交互模式的终端:runoob@runoob:~$ docker exec -i -t mynginx /bin/bash
root@b1a0703e41e7:/#
# docker ps -a
... 9df70f9a0714 openjdk "/usercode/script.sh…"
...
# docker exec -it 9df70f9a0714 /bin/bash
:::
docker create :创建一个新的容器但不启动它
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
:::success
OPTIONS说明:- -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
- -d: 后台运行容器,并返回容器ID;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -P: 随机端口映射,容器内部端口随机映射到主机的端口
- -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- —name=”nginx-lb”: 为容器指定一个名称;
- —dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
- —dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
- -h “mars”: 指定容器的hostname;
- -e username=”ritchie”: 设置环境变量;
- —env-file=[]: 从指定文件读入环境变量;
- —cpuset=”0-2” or —cpuset=”0,1,2”: 绑定容器到指定CPU运行;
- -m :设置容器使用内存最大值;
- —net=”bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
- —link=[]: 添加链接到另一个容器;
- —expose=[]: 开放一个端口或一组端口;
- —volume , -v: 绑定一个卷
:::
:::color3
使用docker镜像nginx:latest创建一个容器,并将容器命名为myrunoobunoob@runoob:~$ docker create --name myrunoob nginx:latest
09b93464c2f75b7b69f83d56a9cfc23ceb50a48a9db7652ee4c27e3e2cb1961f
:::
容器操作
docker ps : 列出容器
docker ps [OPTIONS]
:::success
OPTIONS说明:- -a :显示所有的容器,包括未运行的。
- -f :根据条件过滤显示的内容。
- —format :指定返回值的模板文件。
- -l :显示最近创建的容器。
- -n :列出最近创建的n个容器。
- —no-trunc :不截断输出。
- -q :静默模式,只显示容器编号。
- -s :显示总的文件大小。
:::
:::color3
列出所有在运行的容器信息。runoob@runoob:~$ docker ps
CONTAINER ID IMAGE COMMAND ... PORTS NAMES 09b93464c2f7 nginx:latest "nginx -g 'daemon off" ... 80/tcp, 443/tcp myrunoob
96f7f14e99ab mysql:5.6 "docker-entrypoint.sh" ... 0.0.0.0:3306->3306/tcp mymysql
:::
docker logs : 获取容器的日志
docker logs [OPTIONS] CONTAINER
:::color3
OPTIONS说明:- -f :** **跟踪日志输出
- —since :显示某个开始时间的所有日志
- -t :** **显示时间戳
- —tail :仅列出最新N条容器日志
:::
:::color3
跟踪查看容器mynginx的日志输出。unoob@runoob:~$ docker logs -f mynginx 192.168.239.1 - - [10/Jul/2016:16:53:33 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-" 2016/07/10 16:53:33 [error] 5#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.239.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.239.130", referrer: "http://192.168.239.130/" 192.168.239.1 - - [10/Jul/2016:16:53:33 +0000] "GET /favicon.ico HTTP/1.1" 404 571 "http://192.168.239.130/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-" 192.168.239.1 - - [10/Jul/2016:16:53:59 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-"
docker logs --since="2016-07-01" --tail=10 mynginx
:::
docker stats : 显示容器资源的使用情况,包括:CPU、内存、网络 I/O 等
docker stats [OPTIONS] [CONTAINER...]
:::success
OPTIONS 说明:- —all , -a :显示所有的容器,包括未运行的。
- —format :指定返回值的模板文件。
- —no-stream :展示当前状态就直接退出了,不再实时更新。
- —no-trunc :不截断输出。
:::
:::color3
列出所有在运行的容器信息。runoob@runoob:~$ docker stats
CONTAINER ID NAME CPU% MEM USAGE/LIMIT MEM % NET I/O BLOCK I/O PIDS
b95a83497c91 awesome 0.28% 5.629MiB/1.95GiB 0.28% 916B/0B 147kB/0B 9
67b2525d8ad1 foobar 0.00% 1.72MiB/1.952GiB 0.09% 2.4kB/0B 4.11MB/0B 2
:::
本地镜像管理
docker images : 列出本地镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
:::success
OPTIONS说明:- -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
- —digests :显示镜像的摘要信息;
- -f :显示满足条件的镜像;
- —format :指定返回值的模板文件;
- —no-trunc :显示完整的镜像信息;
- -q :只显示镜像ID。
:::
:::success
查看本地镜像列表。runoob@runoob:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 4465e4bcad80 3 weeks ago 185.7 MB
httpd latest ed38aaffef30 11 days ago 195.1 MB
docker images ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 14.04 4465e4bcad80 3 weeks ago 185.7 MB
ubuntu 15.10 ed38aaffef30 11 days ago 195.1 MB
:::
docker rmi : 删除本地一个或多个镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
:::success
OPTIONS说明:- -f :强制删除;
- —no-prune :不移除该镜像的过程镜像,默认移除;
:::
:::color3
强制删除本地镜像 runoob/ubuntu:v4。root@runoob:~# docker rmi -f runoob/ubuntu:v4
Untagged: runoob/ubuntu:v4
Deleted: sha256:1c06aa18edee44230f93a90a7d88139235de12cd4c089d41eed8419b503072be
Deleted: sha256:85feb446e89a28d58ee7d80ea5ce367eebb7cec70f0ec18aa4faa874cbd97c73
:::