Docker鏡像下載及容器啟動教程

Docker鏡像和容器安裝
- 版本要求:系統(tǒng)為64位、系統(tǒng)內(nèi)核版本為 3.10 以上
- 查看linux系統(tǒng)版本,使用 lsb_release -a ,若出現(xiàn)未知的命令,先使用yum安裝 redhat-lsb
# yum 安裝redhat-lsb yum install -y redhat-lsb # 查看centos版本 lsb_release -a

- 系統(tǒng)內(nèi)核版本查看 uname -r

- 查看是否已安裝docker列表 我這個是已經(jīng)安裝了的截圖 yum list installed | grep docker

- 安裝docker yum -y install docker , y表示不詢問安裝,直到安裝成功,安裝完后再次查看安裝列表
- 啟動docker systemctl start docker
- 查看docker服務(wù)狀態(tài) systemctl status docker

說明: Docker安裝成功
搜索centos鏡像 docker search centos , 第一條是官方的,引用次數(shù)最多,stars

獲取 centos 鏡像 docker pull centos

查看鏡像 docker images

Docker 常用命令
使用docker輸出
‘hello world’ docker run centos /bin/echo 'hello world'

查看docker 所有的鏡像,包括狀態(tài) docker ps -a

創(chuàng)建一個centos容器,命名為 mycentos,并進(jìn)入其中,不退出 docker run --name mydocker -it centos /bin/bash

進(jìn)入centos容器后,執(zhí)行 ps aux , 可以看到當(dāng)前只有兩個進(jìn)程

執(zhí)行docker run centos 做了什么事情那? 查看centos容器IP ip ad li
- 首先檢查 centos鏡像是否存在,若不存在,則先在dockerHub 上pull下來。
- 然后使用 centos鏡像啟動了一個容器。
- 再分配一個文件系統(tǒng),把這個文件置于這個容器的上一層,置于可寫。
- 同時分配了一個IP地址,使用ip命令查看 ip ad li
?

docker容器會運(yùn)行一個你指定的應(yīng)用程序,當(dāng)這個應(yīng)用程序退出時,docker容器也就退出了。所以說,每次docker容器啟動,只能啟動一個應(yīng)用程序
退出docker容器,在看之前創(chuàng)建的docker容器。 mydcoker 容器已經(jīng)退出了

啟動一個已經(jīng)退出的容器 docker start CONTAINER ID

停止一個容器 docker stop 容器ID

刪除一個容器 docker rm 容器ID

進(jìn)入容器 docker attach 容器ID,有一個問題,很大情況下是進(jìn)不去的,ctrl + c 之后,再次查看容器狀態(tài)發(fā)現(xiàn)容器已經(jīng)退出了。

使用方式二進(jìn)入容器, nsenter 訪問另外一個容器的名稱空間,通過PID進(jìn)去。
nsenter 在 util-linux軟件包內(nèi),如果沒有這個命令,需要先用yum 安裝一下,
yum install -u util-linux
獲取這個容器的PID,
docker inspect --format "{{.State.Pid}}" 容器名稱 
使用nsenter 命令進(jìn)入 mynginx容器
nsenter --target 25760 --mount --uts --ipc --net --pid

進(jìn)入鏡像后,若發(fā)現(xiàn)ps 命令找不到,執(zhí)行 apt-get update && apt-get install procps 安裝
官方Nginx 鏡像的 nginx 在 /etc/nginx 目錄下

nginx鏡像的root 目錄位置 /usr/share/nginx/html

VI命令安裝
分開執(zhí)行 apt-get update & apt-get install vim,有些慢,慢慢等待

進(jìn)入容器腳本 nsenter
編寫進(jìn)入docker腳本,參數(shù)為 容器Name

腳本命名為 in.sh
#!/bin/bash
CNAME=$1
CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME)
nsenter --target $CPID --mount --uts --ipc --net --pid總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker安裝java環(huán)境的實現(xiàn)步驟
這篇文章主要介紹了docker安裝java環(huán)境的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Docker中配置容器啟動優(yōu)先級與依賴關(guān)系
Docker 中配置容器啟動優(yōu)先級與依賴關(guān)系主要通過 depends_on 和 healthcheck 實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04
Docker復(fù)制現(xiàn)有容器的實現(xiàn)方法
在使用Docker進(jìn)行應(yīng)用開發(fā)和部署時,我們經(jīng)常需要基于現(xiàn)有的容器創(chuàng)建相似的環(huán)境,本文主要介紹了Docker復(fù)制現(xiàn)有容器的實現(xiàn)方法,具有一定的參考價值,感興趣的可以了解一下2024-03-03

