多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
#### **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) 此时从容器到宿主机的文件拷贝就完成了