#### **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命令。
![](https://img.kancloud.cn/ea/2f/ea2f1aaf137715b554a599f90d9ba7c9_1096x248.png)
#### **docker ps** **//** **列出当前所有正在运行的容器**
语法:docker ps \[可选参数\]
![](https://img.kancloud.cn/9f/1c/9f1c82794df625c7d5f088acd794557d_1715x118.png)
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发现有一个容器正在运行
![](https://img.kancloud.cn/dd/7c/dd7cb052d54bb3a29c41ef98682acf6a_1647x111.png)
此时,可以通过docker kill centos-test-01来强制停止该容器
![](https://img.kancloud.cn/51/32/5132fcbc2ea6977e20a7619a7927a7a3_660x78.png)
此时再查看docker ps发现该容器已停止
![](https://img.kancloud.cn/e4/b3/e4b37607fcdfa3403ec29a7e09eac057_1513x88.png)
#### **docker rm** **// 删除已停止的容器**
语法:docker rm \[可选参数\] 容器ID或容器名
参数说明:
- -f:表示强制删除
![](https://img.kancloud.cn/3d/fc/3dfc5a9393f805b856599248b78adbac_1758x115.png)
需求:删除容器名称为centos-test-03的容器
![](https://img.kancloud.cn/64/ef/64efef4d40af0c2024387d3bde089436_676x81.png)
此时再通过docker ps -a查看,发现该容器已删除
![](https://img.kancloud.cn/84/16/8416c6cf5df4433f42ab840729687344_1548x82.png)
##### 一次性删除多个容器
语法:docker rm -f $(docker ps -qa)
docker ps -a查看已有的容器列表
![](https://img.kancloud.cn/82/58/8258f435ce1f4c205eee1b8892762ac5_1766x153.png)
一次性将容器列表的容器全部删除,强制执行
![](https://img.kancloud.cn/13/7c/137c6ed148fb585fcde452164d100279_718x127.png)
此时再查看容器列表,发现为空,表示已经删除
![](https://img.kancloud.cn/38/aa/38aaae5362922cd597439bab438afb47_1575x103.png)
#### **docker run -d** **// 启动守护式容器**
语法:docker run -d 镜像名或镜像ID
![](https://img.kancloud.cn/5f/b4/5fb44619bea5d05af815c4f2e2d1f27f_901x60.png)
为了避免后台进程的自动挂起而引起的进程自动退出,docker容器在后台运行,就必须有一个前台进程。容器运行的命令如果不是那些一直挂起的命令,比如:top,tail,就会在程序执行完成后,自动退出。解决方案是,将要运行的程序以前台进程的形式运行。所以正确的操作是:
docker run -d centos /bin/bash -c "while true;do echo hello 金刀;sleep 2;done"
![](https://img.kancloud.cn/b5/7d/b57df8940604b6fc9d94e75c50b420eb_1254x84.png)
#### **docker logs** **// 查看容器日志**
语法:docker logs -f -t –tail 容器ID或容器名称
参数说明:
- -t:加入时间戳
- -f:跟随最新的日志打印
- --tail 数字:显示最后多少条记录
![](https://img.kancloud.cn/ba/f4/baf423fff19e68e07c9ec8f3a6205831_851x333.png)
#### **docker top** **// 查看容器内运行的进程**
语法:docker top 容器ID或容器名称
![](https://img.kancloud.cn/7d/d7/7dd727728108f7e8401f3cb697cac073_1875x172.png)
#### **docker inspect** **// 查看容器内部细节**
语法:docker inspect 容器ID或容器名称
因回显信息过多,只截取了部分内容
![](https://img.kancloud.cn/99/26/992614154a4c3ae5f6f0b648357f8d2a_1872x787.png)
#### 进入正在运行的容器并以命令行交互
语法:
- docker exec -it 容器ID或容器名称 bashShell
- docker attach 容器ID或容器名称
二者区别:
- attach:直接进入容器启动命令的终端,不会启动新的进程
- exec:在容器中打开新的终端,并且可以启动新的进程
![](https://img.kancloud.cn/7b/c7/7bc789f726c8884fae7867762795722f_730x123.png)
![](https://img.kancloud.cn/b8/80/b8805b65a30d0e3260baf5fb4145ef47_812x64.png)
#### **docker cp** **// 从容器内拷贝文件到主机**
语法:docker cp 容器ID或容器名称:容器内路径 目的主机路径
![](https://img.kancloud.cn/b5/b6/b5b69aef8a9bceafeb3511daccc5bbfc_697x188.png)
需求:将centos容器中的/root/hello文件,拷贝到宿主机上
![](https://img.kancloud.cn/41/a4/41a4108684b0749856fe9d7f74369154_1603x283.png)
可以看到,在我宿主机上面的/root目录下,并没叫hello的文件。我将从docker的centos容器中,将/root下的hello文件拷贝到宿主机系统的/root目录下
![](https://img.kancloud.cn/14/49/14499ba38d77e66fb8e2516ff9c0fd16_1611x372.png)
此时从容器到宿主机的文件拷贝就完成了
- 什么是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案例