#### **docker run** **//** **新建并启动容器**
语法:docker run \[选项参数\] 镜像名称或镜像ID \[COMMAND\] \[ARG…\]
参数说明:
- --name=”容器新名字”:为容器指定一个名称
- -d:后台运行容器,并返回容器ID,也即启动守护式容器
- -i:以交互模式运行容器,通常与-t同时使用
- -t:为容器重新分配一个伪输入终端(类似与Linux中的shell窗口,或者Windows下的CMD窗口),通常与-i同时使用;
- -P:随机端口映射
- -p:指定端口映射,有以下四种格式
1. ip:hostPort:containerPort
2. ip::containerPort
3. hostPort:containerPort
4. containerPort
需求:使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

#### **docker ps** **//** **列出当前所有正在运行的容器**
语法:docker ps \[可选参数\]

CONTAINER ID:容器ID
IMAGE:镜像ID,如果以镜像名run,则这里会是镜像名称
COMMAND:启动容器时运行的命令,这里的意思是以“/bin/bash”的方式登录到这个容器
CREATED:容器的创建时间
STATUS:容器状态
PORTS: 容器的端口信息和使用的连接类型
NAMES:镜像自动为容器创建的名字
常用参数说明:
- -a:列出当前所有**正在运行的容器**+**历史上运行过的**
- -l:显示最近(上一个)创建的容器
- -n 次数:显示最近n个创建的容器,如:-n 10(显示上面10次创建的容器信息)
- -q:静默模式,只显示容器编号
- --no-trunc:不截断输出
#### 退出容器
语法:
- 容器停止退出:exit
- 容器不停止退出:ctrl+p+q
#### docker stop // 停止容器
语法:docker stop 容器ID或容器名
#### **docker start** **// 启动容器**
语法:docker start 容器ID或容器名
#### **docker restart** **// 重启容器**
语法:docker restart 容器ID或容器名
#### **docker kill** **// 强制停止容器**
语法:docker kill 容器ID或容器名
docker ps发现有一个容器正在运行

此时,可以通过docker kill centos-test-01来强制停止该容器

此时再查看docker ps发现该容器已停止

#### **docker rm** **// 删除已停止的容器**
语法:docker rm \[可选参数\] 容器ID或容器名
参数说明:
- -f:表示强制删除

需求:删除容器名称为centos-test-03的容器

此时再通过docker ps -a查看,发现该容器已删除

##### 一次性删除多个容器
语法:docker rm -f $(docker ps -qa)
docker ps -a查看已有的容器列表

一次性将容器列表的容器全部删除,强制执行

此时再查看容器列表,发现为空,表示已经删除

#### **docker run -d** **// 启动守护式容器**
语法:docker run -d 镜像名或镜像ID

为了避免后台进程的自动挂起而引起的进程自动退出,docker容器在后台运行,就必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令,比如:top,tail,就会在程序执行完成后,自动退出。解决方案是,将要运行的程序以前台进程的形式运行。所以正确的操作是:
docker run -d centos /bin/bash -c "while true;do echo hello 金刀;sleep 2;done"

#### **docker logs** **// 查看容器日志**
语法:docker logs -f -t –tail 容器ID或容器名称
参数说明:
- -t:加入时间戳
- -f:跟随最新的日志打印
- --tail 数字:显示最后多少条记录

#### **docker top** **// 查看容器内运行的进程**
语法:docker top 容器ID或容器名称

#### **docker inspect** **// 查看容器内部细节**
语法:docker inspect 容器ID或容器名称
因回显信息过多,只截取了部分内容

#### 进入正在运行的容器并以命令行交互
语法:
- docker exec -it 容器ID或容器名称 bashShell
- docker attach 容器ID或容器名称
二者区别:
- attach:直接进入容器启动命令的终端,不会启动新的进程
- exec:在容器中打开新的终端,并且可以启动新的进程


#### **docker cp** **// 从容器内拷贝文件到主机**
语法:docker cp 容器ID或容器名称:容器内路径 目的主机路径

需求:将centos容器中的/root/hello文件,拷贝到宿主机上

可以看到,在我宿主机上面的/root目录下,并没叫hello的文件。我将从docker的centos容器中,将/root下的hello文件拷贝到宿主机系统的/root目录下

此时从容器到宿主机的文件拷贝就完成了
- 什么是Docker
- 为什么会有Docker
- 虚拟技术的发展
- Docker的优势
- Docker的应用场景(能干什么)
- 获取Docker及文档资源
- Docker架构
- Docker工作原理
- 为什么Docker比虚拟机快?
- Docker的安装
- 前提条件
- 安装Docker Engine(Docker引擎)
- 程序员的入门经典之HelloWorld
- 卸载Docker引擎
- 配置镜像加速
- 解决方案:重新加载daemon.json文件后,重启服务出错
- Docker常用命令
- 帮助命令
- 镜像命令
- 常用容器命令
- Docker镜像
- 镜像是什么
- 镜像的特点
- docker commit // 镜像提交
- 运行一个Tomcat容器
- Docker容器数据卷
- 什么是容器数据卷
- 数据卷可以干嘛?
- 数据卷的挂载
- 数据卷容器
- Dockerfile
- 什么是Dockerfile
- Dockerfile构建镜像的流程
- Dockerfile的Demo(CentOS6.8)
- Dockerfile构建过程解析
- Dockerfile体系结构
- Dockerfile案例