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

Linux服務(wù)器上使用docker的簡單教程

 更新時(shí)間:2025年03月19日 08:39:28   作者:MoonOut  
這篇文章主要為大家詳細(xì)介紹了Linux服務(wù)器上使用docker的簡單教程,文中的示例代碼簡潔易懂,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下

00 需求

需要配置一些新的服務(wù)器,只能通過 ssh boss@172.16.1.100 來連接,然后在 /data1 磁盤下創(chuàng)建自己的 docker,用 ssh 連接 docker 來使用服務(wù)器。

(boss 和 172.16.1.100 地址均為虛構(gòu),在使用時(shí),需要替換成自己希望配置的服務(wù)器地址,和可以使用的賬號(hào))

系統(tǒng):Ubuntu 20.04,有 nvidia 顯卡。

01 安裝 docker

(我需要配置的服務(wù)器里已經(jīng)安裝了 docker,因此沒有做這個(gè)步驟。以下教程是 LLM 生成的)

# 首先,確保系統(tǒng)中沒有舊版本的 Docker
sudo apt-get remove docker docker-engine docker.io containerd runc
 
# 然后,更新包列表并安裝必要的包
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
 
# 添加 Docker 的官方 GPG 密鑰
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
 
# 設(shè)置 Docker 的穩(wěn)定版?zhèn)}庫
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
 
# 更新包列表以包含 Docker 倉庫中的軟件包
sudo apt-get update
 
# 安裝 Docker CE、Docker CLI 和 Containerd
sudo apt-get install docker-ce docker-ce-cli containerd.io
 
# 檢查 Docker 的安裝版本
docker --version
 
# 驗(yàn)證 Docker 是否安裝成功,這個(gè)命令會(huì)下載并運(yùn)行一個(gè)測(cè)試鏡像
sudo docker run hello-world
 
# 最后,配置 Docker 開機(jī)自啟
sudo systemctl enable docker

為了不使用 sudo 運(yùn)行 Docker 命令,可以將當(dāng)前用戶添加到 docker 組:

sudo usermod -aG docker $USER

重新登錄或重啟系統(tǒng)以使組更改生效。

02 準(zhǔn)備工作

新建準(zhǔn)備放 docker 的目錄,并改變目錄權(quán)限:(<user_name> 是我的名字,在跑命令時(shí),需要替換成希望 docker 擁有的名字)

sudo mkdir /data1/<user_name>
sudo chown boss /data1/<user_name>/ -R
sudo chgrp boss /data1/<user_name>/ -R
mkdir /data1/<user_name>/docker
mkdir /data1/<user_name>/project

配置 ssh 的 authorized_keys:

cd /data1/<user_name>/docker/
vim authorized_keys
# 把本地電腦 user/.ssh 里面的 id_rsa.pub 的內(nèi)容復(fù)制上去

03 配置 Dockerfile 和 docker composer

新建 Dockerfile:

cd /data1/<user_name>/docker/
vim Dockerfile

Dockerfile 的具體內(nèi)容:

# 看一下 docker images 里面有哪些鏡像
FROM nvidia/cuda:11.6.0-devel-ubuntu20.04
 
# 設(shè)置時(shí)區(qū)
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
 
# 安裝基礎(chǔ)軟件
RUN apt-get update && \
    apt-get install -y \
    openssh-server \
    python3 \
    python3-pip \
    vim \
    git \
    wget \
    curl \
    unzip \
    sudo \
    net-tools \
    iputils-ping \
    build-essential \
    cmake \
    htop \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
 
 
# 安裝其他軟件
RUN apt-get update && \
    apt-get install -y \
    tmux \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
 
# 創(chuàng)建用戶(保持與宿主機(jī)相同的 UID 避免權(quán)限問題)
RUN useradd -m -u 1001 -s /bin/bash <user_name>
 
# sudo without password
RUN echo "<user_name> ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
 
USER <user_name>
WORKDIR /home/<user_name>
 
# 創(chuàng)建 .ssh 目錄并設(shè)置權(quán)限
RUN mkdir -p /home/<user_name>/.ssh && \
    chown -R <user_name>:<user_name> /home/<user_name>/.ssh && \
    chmod 700 /home/<user_name>/.ssh
 
# 安裝 Conda
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh && \
    bash miniconda.sh -b -p /home/<user_name>/miniconda && \
    rm miniconda.sh
RUN /home/<user_name>/miniconda/bin/conda init bash
 
CMD ["/bin/bash"]

配置 docker composer 之前,先確認(rèn)哪個(gè)端口可用:

sudo netstat -tuln
# 找一個(gè)不被列出的端口,比如 8012

然后,新建 docker composer:

cd /data1/<user_name>/docker/
vim docker-compose.yml

docker-compose.yml 的具體內(nèi)容:

version: '3.8'
 
services:
  <user_name>:
    container_name: <user_name> # 設(shè)置容器名稱
    build: . # 使用當(dāng)前目錄下的 Dockerfile 構(gòu)建鏡像
    image: <user_name> # 鏡像名稱
    restart: unless-stopped
    runtime: nvidia # 啟用 GPU 支持
    ports:
      - "8012:22" # 選擇一個(gè)未被占用的端口(請(qǐng)確認(rèn) 8012 可用)
    volumes:
      - /data1/<user_name>/project:/home/<user_name>/project # 掛載項(xiàng)目目錄
      - /data1/<user_name>/docker/authorized_keys:/home/<user_name>/.ssh/authorized_keys  # SSH 
    environment:
      - NVIDIA_DRIVER_CAPABILITIES=all
    command: /bin/bash -c "sudo service ssh start && sleep infinity"
 

一個(gè)兼容舊版本 docker 的 docker composer(我并不懂什么舊版本,都是專家寫的)

services:
  container_name: <user_name> # 設(shè)置容器名稱
  build: . # 使用當(dāng)前目錄下的 Dockerfile 構(gòu)建鏡像
  restart: unless-stopped
  ports:
    - "8012:22" # 選擇一個(gè)未被占用的端口(請(qǐng)確認(rèn) 8012 可用)
  volumes:
    - /data1/<user_name>/project:/home/<user_name>/project # 掛載項(xiàng)目目錄
    - /data1/<user_name>/docker/authorized_keys:/home/<user_name>/.ssh/authorized_keys  # SSH 
  environment:
    - NVIDIA_DRIVER_CAPABILITIES=all
  command: /bin/bash -c "sudo service ssh start && sleep infinity"

04 啟動(dòng) docker

然后,啟動(dòng) docker:

cd /data1/<user_name>/docker/
docker compose build  # build Dockerfile
docker compose up -d  # 啟動(dòng) docker
# 舊版本 docker
docker-compose build  # build Dockerfile
docker-compose up -d  # 啟動(dòng) docker
 
# 進(jìn)入 docker 看一下
docker exec -it <user_name> bash
# 然后 ls,會(huì)看到 miniconda 和 project 兩個(gè)目錄,所有需要映射到磁盤、不希望丟失的文件都需要放到 project 里
 
# 查看目錄權(quán)限
ls -al
 
# 發(fā)現(xiàn)權(quán)限有問題,退出 docker,再改一下目錄的權(quán)限
sudo chown boss /data1/<user_name>/ -R
sudo chgrp boss /data1/<user_name>/ -R
 
# 如果發(fā)現(xiàn) Dockerfile 寫錯(cuò)了,或者想加一些東西,可以再跑
docker compose build  # build Dockerfile
docker compose up -d  # 會(huì)變成 Recreating <user_name>
 
# 假設(shè)已經(jīng)進(jìn)入了 docker,想改 docker 的 ./ssh 的權(quán)限
docker exec -it <user_name> bash
sudo chown <user_name> ~/.ssh -R
sudo chgrp <user_name> ~/.ssh -R
 
# 暫時(shí)停止和啟動(dòng) docker
docker compose stop
docker compose start
 
# 把 docker 殺掉
docker compose down

05 測(cè)試能否 ssh 連接這個(gè) docker(可能需要結(jié)合 04 來 debug)

# 在本地電腦上連接
ssh -p 8012 <user_name>@172.16.1.100

ssh 連接不成功(比如讓輸密碼),很可能是 docker 內(nèi)外的 .ssh 或 authorize_keys 的權(quán)限出了問題,docker 外要改成 boss,dockers 內(nèi)要改成 <user_name>。

如果連接時(shí)出現(xiàn)

ECDSA host key for [172.16.1.100]:8012 has changed and you have requested strict checking.
Host key verification failed.

則需要把 known_host 里面的 172.16.1.100 刪除,上面的錯(cuò)誤提示會(huì)給出需要執(zhí)行的命令。

以上就是Linux服務(wù)器上使用docker的簡單教程的詳細(xì)內(nèi)容,更多關(guān)于Linux使用docker的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Linux如何查看當(dāng)前占用CPU或內(nèi)存最多的幾個(gè)進(jìn)程

    詳解Linux如何查看當(dāng)前占用CPU或內(nèi)存最多的幾個(gè)進(jìn)程

    本篇文章主要介紹了詳解Linux如何查看當(dāng)前占用CPU或內(nèi)存最多的幾個(gè)進(jìn)程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • linux中的常用命令與快捷鍵介紹

    linux中的常用命令與快捷鍵介紹

    大家好,本篇文章主要講的是linux中的常用命令與快捷鍵介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Apache訪問機(jī)制配置小結(jié)

    Apache訪問機(jī)制配置小結(jié)

    本文主要介紹了Apache訪問機(jī)制配置小結(jié),包括如何設(shè)置訪問控制、認(rèn)證和授權(quán),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • linux刪除 buff/cache緩存的操作方法

    linux刪除 buff/cache緩存的操作方法

    這篇文章主要介紹了linux刪除 buff/cache緩存的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-04-04
  • Linux移動(dòng)文件夾(目錄)以及目錄下的內(nèi)容問題

    Linux移動(dòng)文件夾(目錄)以及目錄下的內(nèi)容問題

    這篇文章主要介紹了Linux移動(dòng)文件夾(目錄)以及目錄下的內(nèi)容問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Linux系統(tǒng)審計(jì)規(guī)則配置指南

    Linux系統(tǒng)審計(jì)規(guī)則配置指南

    在當(dāng)今企業(yè)級(jí)安全架構(gòu)中,Linux 系統(tǒng)作為基礎(chǔ)設(shè)施的基石,其安全性至關(guān)重要,本文將從零開始,深入講解 Linux 審計(jì)子系統(tǒng)的原理、配置方法、實(shí)戰(zhàn)案例,并結(jié)合 Java 應(yīng)用場(chǎng)景給出可落地的代碼示例,需要的朋友可以參考下
    2026-04-04
  • linux安裝miniconda3實(shí)踐過程

    linux安裝miniconda3實(shí)踐過程

    這篇文章主要介紹了linux安裝miniconda3實(shí)踐過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2026-03-03
  • apache配置開啟網(wǎng)站服務(wù)步驟

    apache配置開啟網(wǎng)站服務(wù)步驟

    apache配置開啟網(wǎng)站服務(wù)步驟,需要的朋友可以參考下。
    2010-06-06
  • 詳解firewall的規(guī)則設(shè)置與命令(白名單設(shè)置)

    詳解firewall的規(guī)則設(shè)置與命令(白名單設(shè)置)

    這篇文章主要介紹了詳解firewall的規(guī)則設(shè)置與命令(白名單設(shè)置),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Ubuntu虛擬機(jī)下使用cutecom進(jìn)行串口通信的方法

    Ubuntu虛擬機(jī)下使用cutecom進(jìn)行串口通信的方法

    今天小編就為大家分享一篇關(guān)于Ubuntu虛擬機(jī)下使用cutecom進(jìn)行串口通信的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評(píng)論

桂林市| 南川市| 古蔺县| 西吉县| 永胜县| 从化市| 广东省| 宾阳县| 美姑县| 满洲里市| 淳化县| 闽侯县| 石景山区| 皋兰县| 建阳市| 华阴市| 和田市| 永靖县| 启东市| 长沙市| 泸西县| 扎兰屯市| 棋牌| 满洲里市| 辽中县| 齐齐哈尔市| 固安县| 汽车| 图们市| 民权县| 惠东县| 蒙山县| 青阳县| 克山县| 乐亭县| 饶阳县| 平邑县| 丹阳市| 锦屏县| 黄龙县| 阿鲁科尔沁旗|