一、容器操作
1、容器启动(docker run)(创建容器并启动)
docker run :创建一个新的容器并运行一个命令
语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
参数:
-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: 绑定一个卷
(1)使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx
docker run --name mynginx -d nginx:latest
(2)使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口
docker run -P -d nginx:latest
(3)使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest
(4)绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。
docker run -p 127.0.0.1:80:8080/tcp centos bash
(5)使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it nginx:latest /bin/bash
2、容器启动/停止/重启(对已存在的容器进行操作)
(1)启动被停止的容器
docker start redis
(2)重启
docker restart redis
(3)停止
docker stop redis
docker run与start区别:
docker run:只在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器时,只需要使用命令docker start 即可。
docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)。
3、容器进程(docker top)
(1)查看容器中运行的进程信息
docker top redis
(2)查看所有运行容器的进程信息
for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
4、列出容器(docker ps)
docker ps:列出所有在运行的容器信息
主要参数
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
(1)列出所有在运行的容器信息
docker ps
输出内容解释:
CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。(共7种:created:已创建;restarting:重启中;running:运行中;removing:迁移中;paused:暂停;exited:停止;dead:死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称。
(2)列出所有创建的容器ID(包括未运行的)
docker ps -a -q
(3)显示最近创建容器
docker ps -l
(4)显示最近创建的3个容器
docker ps -n 3
(5)不截断输出
docker ps --no-trunc
5、容器日志(docker logs)
docker logs:获取容器日志
主要参数:
-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志
(1)查看容器redis日志
docker logs redis
(2)查看容器redis从2020年4月30日后的最新20条日志。
docker logs --since="2020-04-30" --tail=20 redis
6、容器停止与删除
(1)停止一个运行中的容器
docker stop redis
(2)杀掉一个运行中的容器
docker kill redis
(3)删除一个已停止的容器
docker rm redis
(4)删除一个运行中的容器
docker rm -f redis
(5)删除多个容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
docker rm $(docker ps -a -q)
(6)-l 移除容器间的网络连接,连接名为 db
docker rm -l db
(7)-v 删除容器,并删除容器挂载的数据卷
docker rm -v redis
7、容器连接
docker attach :连接到正在运行中的容器。
语法:docker attach [OPTIONS] CONTAINER
(1)容器redis将访问日志指向标准输出,连接到容器查看访问信息。
docker attach --sig-proxy=false redis
注:attach上去的容器必须正在运行。