欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解docker 容器不自動(dòng)退出結(jié)束運(yùn)行的方法

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

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

docker 容器的生命周期是同容器中的前置進(jìn)程相關(guān)在一起的,這也是我們平時(shí)可能會(huì)遇到一些容器只是運(yùn)行幾秒便自動(dòng)結(jié)束的原因:因?yàn)槿萜髦袥]有一個(gè)常駐的前置進(jìn)程,前置進(jìn)程運(yùn)行結(jié)束后,容器便自動(dòng)退出了。

比如 docker hello-world

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

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

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

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

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

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

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

# 后續(xù)停止/啟動(dòng)容器時(shí)就不需要在指定 -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
# 有賬號(hào)的話發(fā)布到 docker hub 上去
docker push big_cat/alpine_sl

以上命令其實(shí)是借助 sh/bash 會(huì)話終端作為前置進(jìn)程,使得容器不會(huì)自動(dòng)退出。

如果你覺得在創(chuàng)建容器時(shí)如此書寫會(huì)很粗陋,沒關(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

通過(guò) docker-compose 將那兩個(gè)參數(shù)傳入進(jìn)去,編排后啟動(dòng)服務(wù)容器。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker部署mysql后無(wú)法連接的解決方式

    docker部署mysql后無(wú)法連接的解決方式

    最近在在docker中安裝了mysql后,去連接的時(shí)候出現(xiàn)錯(cuò)誤,下面這篇文章主要給大家介紹了關(guān)于docker部署mysql后無(wú)法連接的解決方式,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Docker容器監(jiān)控及日志管理實(shí)現(xiàn)過(guò)程解析

    Docker容器監(jiān)控及日志管理實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Docker容器監(jiān)控及日志管理實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 綁定Dokcer容器到主機(jī)指定網(wǎng)卡的方法

    綁定Dokcer容器到主機(jī)指定網(wǎng)卡的方法

    這篇文章主要介紹了綁定 Dokcer 容器到主機(jī)指定網(wǎng)卡的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • docker實(shí)踐之docker-compose部署mysql方式

    docker實(shí)踐之docker-compose部署mysql方式

    這篇文章主要介紹了docker實(shí)踐之docker-compose部署mysql方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Docker配置本地倉(cāng)庫(kù)web訪問的實(shí)現(xiàn)

    Docker配置本地倉(cāng)庫(kù)web訪問的實(shí)現(xiàn)

    本文主要介紹了Docker配置本地倉(cāng)庫(kù)web訪問的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Idea部署遠(yuǎn)程Docker并配置文件

    Idea部署遠(yuǎn)程Docker并配置文件

    這篇文章給大家介紹Idea部署遠(yuǎn)程Docker并添加配置文件的方法及修改項(xiàng)目pom文件的代碼解析,對(duì)idea部署遠(yuǎn)程docker相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-06-06
  • 解決Docker daemon啟動(dòng)問題

    解決Docker daemon啟動(dòng)問題

    這篇文章主要介紹了解決Docker daemon啟動(dòng)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • docker環(huán)境搭建mgr集群的問題及原理

    docker環(huán)境搭建mgr集群的問題及原理

    這篇文章主要介紹了docker?搭建mgr集群,大家都知道MySQL推出MGR之前,傳統(tǒng)復(fù)制模式分為異步復(fù)制和半同步復(fù)制,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • docker搭建minio的問題解決

    docker搭建minio的問題解決

    本文主要介紹了docker搭建minio的問題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Docker連接宿主Redis的方法步驟

    Docker連接宿主Redis的方法步驟

    本文主要介紹了Docker連接宿主Redis的方法步驟,可以輕松地使用Docker容器與宿主機(jī)上的Redis進(jìn)行交互,實(shí)現(xiàn)高效的數(shù)據(jù)存儲(chǔ)和共享,,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01

最新評(píng)論