docker 删除所有未启动的容器_「Docker」 - 运行 & 管理容器

容器是基于容器技术所建立和运行的轻量级应用运行环境,它是Docker封装和管理应用程序或微服务的「集装箱」,在Docker中,容器是最核心的部分。

一、容器的创建和启动

faa691df85b26dc4fea8595432dbcc76.png

Docker容器的生命周期里分为五种状态,其分别代表着:

  • Created:容器已经被创建,容器所需的相关资源已经准备就绪,但容器中的程序还未处于运行状态。
  • Running:容器正在运行,也即容器中的应用正在运行。
  • Paused:容器已暂停,表示容器中的所有程序都处于暂停状态。
  • Stopped:容器处于停止状态,占用的资源和沙盒环境都依然存在,只是容器中的应用程序均已停止。
  • Deleted:容器已删除,相关占用的资源及存储在Docker中的管理信息也都已释放和移除。

A、创建容器

下载好镜像后,通过docker create命令创建容器。

docker create nginx

71d09fd4bd9eac512002ef290d89b61471efc3c7d539ea6c453c1de8575be938

执行docker create后,Docker会根据所给出的镜像创建容器,在控制台中会打印出Docker为容器所分配的容器ID,此时容器处于Created状态。

之后对容器的操作可以通过这个容器ID或者它的缩略形式进行,但用容器ID操作容器难以理解,所以更习惯于使用容器名来操作容器。

要使用容器名操作容器,就先得给容器命名,在创建容器时可以通过--name选项为配置容器名。

docker create --name redis redis

d7da13d7fc93fb6435d37ccf189b55f4388a4ed20363034761004278b8622a04

B、启动容器

通过docker create创建的容器,是处于Created 状态的,其内部的应用程序还没有启动,所以需要通过docker start命令来启动。

docker start 71d09fd4bd9eac512002ef290d89b61471efc3c7d539ea6c453c1de8575be938

docker start redis

当容器启动后,其中的应用就会运行起来,容器的生命周期也会绑定到了这个应用上,只要应用程序还在运行,那么容器的状态就会是Running,除非进行一些修改容器的操作。

在Docker里,可以通过docker run将docker create和docker start两步操作合成为一步,进一步提高工作效率。

docker run --name nginx -d nginx:1.12

docker run在启动容器时,会采用前台运行,可以通过-d或--detach选项告诉Docker在启动后通过后台运行。

C、停止和删除容器

通过docker stop停止正在运行的容器,容器停止后,维持的文件系统沙盒环境还是存在的,内部被修改的内容也都会保留,可以通过docker start命令将这个容器再次启动。

需要完全删除容器时,可以通过docker rm命令将容器进行删除。正在运行中的容器默认情况下是不能被删除,可以通过增加-f或--force选项来让docker rm强制停止并删除容器。

Docker是轻量级容器,短时间内不需要使用容器时,最佳的做法是删除它而不是停止它。

D、解决删除容器引起的问题

应用对容器内的文件进行了修改,删除容器,会将修改的文件也进行删除。

Docker的解决方案:

  • 在Docker 中,打包镜像的成本非常低,速度也很快,所以如果需要为程序准备一些环境或者配置,完全可以直接将它们打包至新的镜像中,下次直接使用新的镜像创建容器即可。
  • 容器中应用程序所产生的一些文件数据,是非常重要的,如果这些数据随着容器的删除而丢失,其损失是非常巨大的。对于这类由应用程序所产生的数据,并且需要保证它们不会随着容器的删除而消失的,可以使用Docker中的数据卷来单独存放。由于数据卷是独立于容器存在的,所以能保证数据不会随着容器的删除而丢失。

二、管理容器

容器创建和启动后,除了关注应用程序是否功能正常外,也会关注容器的状态等内容。

A、显示容器

docker ps列出Docker中的容器,通过-a或--all选项,列出所有状态的容器。

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d7da13d7fc93        redis               "docker-entrypoint.s…"   9 minutes ago       Up 8 minutes        6379/tcp            redis
71d09fd4bd9e        nginx               "nginx -g 'daemon of…"   11 minutes ago      Up 8 minutes        80/tcp              zealous_wu

结果中的COMMAND表示的是容器中主程序(与容器生命周期所绑定进程所关联的程序)的启动命令,这条命令是在镜像内定义的,而容器的启动其实质就是启动这条命令。

B、进入容器

容器是隔离的运行环境,里面除了镜像所规定的主进程外,其他的进程也能够运行,Docker提供docker exec命令,让容器运行所给出的命令。

docker exec redis cat /etc/hostname

# CONTAINER ID
d7da13d7fc93

对于以上操作,多有不便,还是希望进入「容器」,执行命令

docker exec -it redis bash

# 容器内的bash
root@d7da13d7fc93:/data# redis-cli
127.0.0.1:6379> ping
PONG

在借助docker exec进入容器的时候,需要添加-it选项,-i或--interactive表示保持输入流,-t或--tty表示启用一个伪终端,形成bash的交互。

C、挂接容器

Docker为提供了docker attach命令,用于将当前的输入输出流连接到指定的容器上。

docker attach nginx

这个命令最直观的效果可以理解为将容器中的主程序转为了前台运行,与docker run中的-d选项有相反的含义,实际开发过程中用的不多。


参考:

http://blog.poetries.top/2018/11/20/docker-base/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用docker-compose安装xxl-job,可以按照以下步骤进行操作: 1. 首先,确保你已经安装了Dockerdocker-compose。如果没有安装,请先安装它们。 2. 创建一个docker-compose.yml文件,并将下面的内容复制到文件中: ``` version: '3' services: xxl-job: image: xuxueli/xxl-job-admin:2.2.0 container_name: xxl-job environment: PARAMS: "--spring.datasource.url=jdbc:mysql://{数据库IP}:3306/xxl_job?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true&amp;serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password={数据库用户密码}" ports: - 8080:8080 volumes: - /data/docker/xxl-job/logs/:/data/applogs/xxl-job/ ``` 3. 将{数据库IP}替换为你的数据库服务器的IP地址,将{数据库用户密码}替换为你的数据库的用户名和密码。 4. 在终端中,进入docker-compose.yml文件所在的目录,然后运行以下命令启动容器: ``` docker-compose up -d ``` 5. 等待一段时间,直到容器启动完成。你可以使用以下命令检查容器的状态: ``` docker ps ``` 6. 如果容器成功启动,你可以通过访问http://localhost:8080来访问xxl-job的管理界面。 这样,你就可以使用docker-compose安装xxl-job了。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [Docker compose 安装 xxl-job](https://blog.csdn.net/u011069013/article/details/108756572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值