最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解docker 容器不自動退出結(jié)束運行的方法

 更新時間:2019年01月22日 09:02:33   作者:big_cat  
本文主要簡單介紹 docker 容器與前置進程的關(guān)系,以及如何編寫 Dockerfile/docker-compose.yml 優(yōu)雅的讓容器可以常駐運行。具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文主要簡單介紹 docker 容器與前置進程的關(guān)系,以及如何編寫 Dockerfile/docker-compose.yml 優(yōu)雅的讓容器可以常駐運行。

docker 容器的生命周期是同容器中的前置進程相關(guān)在一起的,這也是我們平時可能會遇到一些容器只是運行幾秒便自動結(jié)束的原因:因為容器中沒有一個常駐的前置進程,前置進程運行結(jié)束后,容器便自動退出了。

比如 docker hello-world

# 一閃而過 輸出一堆東西
docker run --name hello-world hello-world
# 可以看到 hello-world 容器已經(jīng)退出了
docker ps -a

那怎樣可以讓容器不自動退出呢?如果我們想登入一個純凈的容器 alpine/centos/ubuntu 之類的,在其基礎(chǔ)上安裝一些服務組件,然后在 commit 成自己的鏡像。

看網(wǎng)上有不少方法是創(chuàng)建容器時執(zhí)行一個 while(true) 的死循環(huán)(當然,sleep 一下)或者用 tail -f /dev/null 一類的,反正就是以開啟一個可以常駐的前置進程為目的。其實我們可以更優(yōu)雅的使用 docker 容器的 interactive 和 tty 參數(shù)來將 sh/bash (*nix 系統(tǒng)必有)命令作為前置命令開啟,這樣容器就不會自動退出了。

例如使用 alpine 鏡像做為基礎(chǔ)鏡像,創(chuàng)建一個 alpine 系統(tǒng)小容器,讓其可以常駐運行,以便我們登錄交互執(zhí)行某些命令。

# 使用 alpine 系統(tǒng)鏡像創(chuàng)建容器
# -i interactive=true 開啟 stdin
# -t tty=true 分配會話終端
# -d 守護模式 不加也可以 不加就直接進入容器中了 需要 ctrl+p+q 切出
# 不能 exit 喲, exit 相當于結(jié)束 sh 會話了 容器會退出的
docker run -it -d --name alpine alpine sh
# alpine 肯定在運行
docker ps
# 登入容器
docker exec -it alpine sh
# apline 使用的 apk 作為包管理
# 安裝個小火車
# 后續(xù)可以使用 docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl 生成新的鏡像
apk add sl
# 退出容器 注:-d 啟動的才可以,如果沒有 -d 啟動直接進入的 sh終端 則不能退出,否則容器也會退出
exit

提交容器變更生成新的鏡像

docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl
docker images
# 有賬號的話發(fā)布到 docker hub 上去
docker push big_cat/alpine_sl

# 后續(xù)停止/啟動容器時就不需要在指定 -it 參數(shù)了
docker stop alpine
docker start alpine

提交容器變更生成新的鏡像

docker commit -m "alpine with sl cmd" -a "big_cat" alpine big_cat/alpine_sl
docker images
# 有賬號的話發(fā)布到 docker hub 上去
docker push big_cat/alpine_sl

以上命令其實是借助 sh/bash 會話終端作為前置進程,使得容器不會自動退出。

如果你覺得在創(chuàng)建容器時如此書寫會很粗陋,沒關(guān)系,我們可以將這些都推給 docker-compose
docker-compose.yml

version: '3'

services:
  big_cat_alpine:
    container_name: big_cat_alpine
    image: alpine
    stdin_open: true # -i interactive
    tty: true # -t tty
    privileged: true
    entrypoint: ["sh"] # 執(zhí)行 sh

創(chuàng)建容器 & 登入容器

docker-compose up -d big_cat_alpine ./
docker ps
docker exec -it big_cat_alpine sh

通過 docker-compose 將那兩個參數(shù)傳入進去,編排后啟動服務容器。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Windows10?Docker?Desktop安裝過程

    Windows10?Docker?Desktop安裝過程

    Docker?Desktop是Docker公司推出的一款桌面應用程序,它提供了一個用戶友好的界面,方便開發(fā)人員在本地環(huán)境中使用容器技術(shù),這篇文章主要介紹了Windows10?Docker?Desktop安裝過程,需要的朋友可以參考下
    2024-01-01
  • docker中的jenkins配置sonarQube的過程

    docker中的jenkins配置sonarQube的過程

    SonarQube是一個開源的代碼分析平臺,用來持續(xù)分析和評測項目源代碼的質(zhì)量,通過SonarQube可以檢測出項目中重復代碼,潛在bug,?代碼規(guī)范,安全性漏洞等問題,并通過SonarQube?web?UI展示出來,這篇文章主要介紹了docker中的jenkins配置sonarQube,需要的朋友可以參考下
    2023-08-08
  • Docker的安裝方法及運行Docker Swarm模式的使用

    Docker的安裝方法及運行Docker Swarm模式的使用

    本文給大家簡單介紹docker的安裝以及1.12版本的swarm模式的使用,包括docker的安裝和配置,對docker swarm簡單使用感興趣的朋友一起看看吧
    2016-11-11
  • 如何查看docker-compose.yml所在位置

    如何查看docker-compose.yml所在位置

    這篇文章主要介紹了如何查看docker-compose.yml所在位置問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • docker 拉取鏡像出錯的問題解決

    docker 拉取鏡像出錯的問題解決

    當Docker拉取鏡像遇到網(wǎng)絡錯誤時,通常是因為鏡像源無法訪問,解決此問題可通過修改Docker的配置文件/etc/docker/daemon.json,設置一個可用的鏡像加速地址,修改后重新加載配置并重啟Docker服務即可,這樣可以提高拉取速度和成功率,避免因網(wǎng)絡問題導致的鏡像拉取失敗
    2024-10-10
  • docker 限制容器對CPU的使用

    docker 限制容器對CPU的使用

    本篇文章主要介紹了docker 限制容器對CPU的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 使用Grafana 展示Docker容器的監(jiān)控圖表并設置郵件報警規(guī)則(圖解)

    使用Grafana 展示Docker容器的監(jiān)控圖表并設置郵件報警規(guī)則(圖解)

    這篇文章主要介紹了使用Grafana 展示Docker容器的監(jiān)控圖表并設置郵件報警規(guī)則的圖文教程,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-01-01
  • docker中run命令30個常用參數(shù)詳解和示例

    docker中run命令30個常用參數(shù)詳解和示例

    這篇文章主要給大家介紹了關(guān)于docker中run命令30個常用參數(shù)的相關(guān)資料,docker?run命令是Docker中最常用的命令之一,用于創(chuàng)建并啟動一個新的容器實例,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • Docker設置日志滾動的解決方案

    Docker設置日志滾動的解決方案

    Docker容器默認將日志寫入同一文件,可能導致磁盤滿,解決方案包括修改全局docker.service配置或針對特定容器修改hostconfig.json,下面給大家介紹Docker設置日志滾動的解決方案,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • Prometheus 整合 AlertManager的教程詳解

    Prometheus 整合 AlertManager的教程詳解

    Alertmanager 主要用于接收 Prometheus 發(fā)送的告警信息,它很容易做到告警信息的去重,降噪,分組,策略路由,是一款前衛(wèi)的告警通知系統(tǒng)。這篇文章主要介紹了Prometheus 整合 AlertManager的教程 ,需要的朋友可以參考下
    2019-07-07

最新評論

安国市| 永平县| 翼城县| 阳曲县| 平安县| 潜江市| 临汾市| 梁山县| 枣庄市| 沧州市| 岐山县| 图们市| 赣榆县| 南召县| 康马县| 舒兰市| 南木林县| 崇阳县| 顺义区| 台江县| 罗山县| 固镇县| 南木林县| 曲沃县| 平度市| 涟水县| 长丰县| 蒲城县| 大足县| 长垣县| 城口县| 富宁县| 新疆| 监利县| 石台县| 宁津县| 闻喜县| 平谷区| 泽库县| 张家界市| 安岳县|