一、容器操作
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上去的容器必须正在运行。