【DOCKER】隨手記

目錄

  • 1. 安裝
    • 1.1 LINUX
    • 1.2 Windows
  • 2. 常用配置
    • 2.1 普通權限運行
    • 2.2 開機自啟動
    • 2.3 3 更換Docker鏡像源
    • 2.4 更改默認存儲位置
  • 3. 顯示帶UI的軟件
  • 4. 基于DOCKER的服務
    • 4.1 FTP
    • 4.2 Portainer
    • 4.3 Watchtower
    • 4.4 SiYuan
    • 4.5 GitLab
      • 4.5.1 創建容器
      • 4.5.2 克隆路徑問題
      • 4.5.3 獲取默認密碼

1. 安裝

1.1 LINUX

參考

  • https://docs.docker.com/engine/install/ubuntu/
  • https://mirror.tuna.tsinghua.edu.cn/help/docker-ce/
# 卸載之前的安裝
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd# 安裝依賴
sudo apt-get update -y
sudo apt-get install -y ca-certificates curl gnupg lsb-release# 添加GPG
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg# 設置倉庫
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 安裝最新引擎  
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin# 運行樣例
sudo docker run -rm hello-world

1.2 Windows

待補充

2. 常用配置

2.1 普通權限運行

sudo usermod -aG docker $USER
newgrp docker 
docker run --rm hello-world

2.2 開機自啟動

# 開啟
sudo systemctl enable docker.service
sudo systemctl enable containerd.service# 關閉
sudo systemctl disable docker.service
sudo systemctl disable containerd.service

2.3 3 更換Docker鏡像源

# 方式一:命令添加
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.mirrors.sjtug.sjtu.edu.cn","https://cr.console.aliyun.com","http://mirror.azure.cn/"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker# 方式二:手動添加
sudo vim  /etc/docker/daemon.json
{"registry-mirrors" : [ "https://docker.mirrors.sjtug.sjtu.edu.cn" ],
}
sudo systemctl daemon-reload
sudo systemctl restart docker

2.4 更改默認存儲位置

sudo docker info | grep "Docker Root Dir"                               # 查看 docker 存儲位置
sudo systemctl stop docker                                              # 停止 docker 服務
sudo rsync -avzP /var/lib/docker/ /home/docker                         # 復制原有數據到新位置
sudo rm -rf /var/lib/docker                                             # 刪除原始存儲文件夾
sudo ln -s /home/docker /var/lib/                        # 指定新的路徑之軟連接到新位置
sudo sed -i '1a"data-root": "/home/docker",' > /etc/docker/daemon.json # 指定新的路徑之配置文件指定新位置
sudo systemctl daemon-reload                                            # 重啟守護進程
sudo systemctl restart docker                                       # 重啟docker
sudo systemctl status docker                                            # 查看運行狀態
sudo docker info | grep "Docker Root Dir"                               # 查看最新存儲位置

3. 顯示帶UI的軟件

# 1. 宿主機開放X server權限
xhost +# 2. 創建容器,使用 -v 參數掛載宿主機的/tmp/.X11-unix目錄,該目錄中存放著unix套接字文件;使用 -e 參數設置容器的DISPLAY環境變量與宿主機一致
docker run -it --rm -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY ubuntu:20.04apt update
apt install gedit
gedit

4. 基于DOCKER的服務

4.1 FTP

# 拉取鏡像
docker pull fauria/vsftpd# 創建數據卷文件夾
mkdir -p ${HOME}/.docker/volumes/vsftpd# 創建容器
docker run                                           \
--detach                                             \
--publish 51020:20                                   \
--publish 51021:21                                   \
--publish 21100-21103:21100-21103                    \
--env FTP_USER=admin                                 \
--env FTP_PASS=admin                                 \
--env PASV_ADDRESS=172.17.0.1                        \
--env PASV_MIN_PORT=21100                            \
--env PASV_MAX_PORT=21103                            \
--env REVERSE_LOOKUP_ENABLE=NO                       \
--name vsftp                                         \
--hostname localhost                                 \
--privileged=true                                    \
--restart=always                                     \
--volume ${HOME}/.docker/volumes/vsftpd:/home/vsftpd \
--volume /etc/localtime:/etc/localtime:ro            \
fauria/vsftpd# 命令行下載文件
wget ftp://admin:admin@172.17.0.1:50021/sources/boost_1_74_0.tar.gz# 默認情況下,僅能上傳下載FTP根目錄下的數據。不能下載其子目錄中的數據。這是由于新建的子目錄的所有權為root賬戶。而連接的賬戶為ftp。因此需要通過以下命令修改文件夾所屬的用戶及用戶組。
chown ftp用戶名  文件夾  # 修改所有者
chgrp ftp用戶名  文件夾  # 修改所屬組# UBUNTU連接FTP服務器
文件管理器 >> Other Locations >> Connect to server
ftp://172.17.0.1:10021

4.2 Portainer

# 拉取鏡像
docker pull portainer/portainer-ce# 創建數據卷文件夾
mkdir -p ${HOME}/.docker/volumes/portainer/data# 創建容器
docker run                                            \
--detach                                              \
--publish 58000:8000                                  \
--publish 59000:9000                                  \
--name=portainer                                      \
--restart=always                                      \
--hostname localhost                                  \
--privileged=true                                     \
--volume /var/run/docker.sock:/var/run/docker.sock    \
--volume ${HOME}/.docker/volumes/portainer/data:/data \
portainer/portainer-ce:latest# 瀏覽器中輸入:http://172.17.0.1:9000

4.3 Watchtower

# 拉取鏡像
docker pull containrrr/watchtower# 創建容器
docker run                                         \
--detach                                           \
--name watchtower                                  \
--restart=always                                   \
--hostname localhost                               \
--privileged=true                                  \
--volume /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower# 單次運行
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once

4.4 SiYuan

# 拉取鏡像
docker pull b3log/siyuan# 創建數據卷文件夾
mkdir -p           ${HOME}/.docker/volumes/siyuan/workspace
chown -R 1000:1000 ${HOME}/.docker/volumes/siyuan/workspace# 創建容器
docker run                                             \
--detach                                               \
--publish 56806:6806                                   \
--name=siyuan                                          \
--restart=always                                       \
--privileged=true                                      \
--user 1000:1000                                       \
--volume /var/run/docker.sock:/var/run/docker.sock     \
--volume ${HOME}/.docker/volumes/siyuan/workspace:/siyuan/workspace \
b3log/siyuan --workspace=/siyuan/workspace --accessAuthCode=SiYuan123,# 瀏覽器中輸入:
# http://172.17.0.1:56806

4.5 GitLab

4.5.1 創建容器

# 1. 拉取鏡像
docker pull gitlab/gitlab-ce# 2. 創建宿主機數據卷文件夾
mkdir -p ${HOME}/.docker/volumes/gitlab/logs    # 日志
mkdir -p ${HOME}/.docker/volumes/gitlab/data    # 數據
mkdir -p ${HOME}/.docker/volumes/gitlab/config  # 配置# 3. 創建容器
docker run                                                    \
--detach                                                      \
--publish 50080:80                                            \
--publish 50022:22                                            \
--publish 50443:443                                           \
--name gitlab                                                 \
--hostname localhost                                          \
--privileged=true                                             \
--restart always                                              \
--volume ${HOME}/.docker/volumes/gitlab/config:/etc/gitlab    \
--volume ${HOME}/.docker/volumes/gitlab/logs:/var/log/gitlab  \
--volume ${HOME}/.docker/volumes/gitlab/data:/var/opt/gitlab  \
--volume /etc/localtime:/etc/localtime:ro                     \
--env 'GITLAB_HOST=192.168.1.88'                              \
--env 'GITLAB_PORT=50080'                                     \
--env 'GITLAB_SSH_PORT=50022'                                 \
gitlab/gitlab-ce# 瀏覽器中輸入:
# http://172.17.0.1:50080

4.5.2 克隆路徑問題

vim ${HOME}/.docker/volumes/gitlab/config/gitlab.rb# 方式一:
external_url 'http://192.168.1.88:50080'
gitlab_rails['gitlab_ssh_host'] = '192.168.1.88'
gitlab_rails['gitlab_shell_ssh_port'] = 50022
nginx['listen_port'] = 80# 方式二:
創建容器時不對 80 端口進行映射,而是直接映射 external_url 中的端口(即原本 -p 9080:80 修改成 -p 9080:9080),同時不要設置 nginx['listen_port'],因為 nginx 會自動監聽 external_url 中的端口,若 external_url 未指定端口,則監聽 80docker restart gitlab

4.5.3 獲取默認密碼

GitLab初始化時將初始秘方放在/etc/gitlab/initial_root_password,且該文件在首次執行reconfigure后自動刪除。由于做了數據卷掛載,因此只需要到宿主機的${HOME}/.docker/volumes/gitlab/config/initial_root_password文件中獲取。

sudo cat ${HOME}/.docker/volumes/gitlab/config/initial_root_password

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697013.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697013.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697013.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

win系統下安裝php8.3版本并配置環境變量的詳細教程

本篇文章主要講解在win系統下安裝和配置php8.3版本&#xff0c;并配置環境變量的詳細教程。 日期&#xff1a;2024年2月22日 作者&#xff1a;任聰聰 一、下載php8.3版本包 php8.3版本官方下載地址&#xff1a;https://windows.php.net/download#php-8.3 步驟一、打開下載地址…

【Unity】Unity與安卓交互

問題描述 Unity和安卓手機進行交互&#xff0c;是我們開發游戲中最常見的場景。本教程將從一個簡單的例子來演示一下。 本教程需要用到Android Studio2021.1.1 1.Android Studio新建一個工程 2.選擇Empty Activity 然后點擊Next 3.點擊Finish完成創建 4.選擇File-New-New Mo…

【python 3.9.18】windowns安裝版

因為這個版本官方未提供&#xff0c;所以需要自己編譯出來&#xff0c;其他沒有的版本可以依據下面的進行生成一個exe也可行。 成品&#xff1a; https://gitee.com/greatLong/python-3.9.18/tree/master/python-3.9.18/PCbuild/amd64 1、環境準備 需要使用到 這里面還需要選…

【MATLAB GUI】 5. 圖像處理菜單(菜單編輯器)

看B站up主freexyn的freexyn編程實例視頻教程系列36Matlab GUI的學習筆記 任務要求設計一個圖像處理菜單&#xff0c;實現圖像的打開導入、灰度處理、存儲等功能 修改過文件名&#xff0c;所以運行的時候會有一點點報錯&#xff0c;但是不影響運行 打開工具欄下邊的菜單編輯器…

開窗Window和WindowAll的區別

在 Apache Flink 流處理框架中&#xff0c;窗口操作是處理流數據的重要部分。Flink 提供了時間窗口、計數窗口等多種窗口類型&#xff0c;用于將數據分割成不同的窗口進行聚合或其他處理。 Window 和 WindowAll 是 Flink 中窗口操作的兩種不同方式&#xff0c;它們分別對應不同…

GIT倉庫轉移--攜帶原分支及提交記錄

背景&#xff1a;最近公司倉庫位置需要移動&#xff0c;想保留原有的倉庫分支和提交記錄 操作&#xff1a; 目的位置新建倉庫&#xff08;要保證創建無誤&#xff09;原倉庫 git clone 到本地&#xff0c;git pull 保證代碼最新找到原倉庫.git/config 文件&#xff0c;修改 rem…

EPSON機器人與PC上位機軟件C#網絡TCP通訊

項目背景&#xff1a; 在非標設備PIN焊接機中用到了愛普生機器人。上位機軟件使用c#wpf開發。主要邏輯在上位機中。用愛普生機器人給焊接平臺實現自動上下料。 通訊方式&#xff1a;網絡TCP通訊&#xff0c;Socket 角色&#xff1a;上位機為服務端&#xff0c;機器人為客戶端…

Linux|centos7|錄屏神器asciinema的編譯安裝和離線化安裝使用

前言&#xff1a; asciinema這個錄屏軟件前面有一點研究&#xff0c;但它的部署安裝比較麻煩&#xff0c;雖然此軟件的安裝部署方式是很多的&#xff0c;比如yum安&#xff0c;apt&#xff0c;brew&#xff0c;docker&#xff0c;pip&#xff0c;rust編譯&#xff0c;docker等…

創建一個基于Node.js的實時聊天應用

在當今數字化社會&#xff0c;實時通訊已成為人們生活中不可或缺的一部分。無論是在社交媒體平臺上與朋友交流&#xff0c;還是在工作場合中與同事協作&#xff0c;實時聊天應用都扮演著重要角色。與此同時&#xff0c;Node.js作為一種流行的后端技術&#xff0c;為開發者提供了…

CrossOver虛擬機軟件2024有哪些功能?最新版本支持哪些游戲?

CrossOver由codewaver公司開發的類虛擬機軟件&#xff0c;目的是使linux和Mac OS X操作系統和window系統兼容。CrossOver不像Parallels或VMware的模擬器&#xff0c;而是實實在在Mac OS X系統上運行的一個軟件。CrossOvers能夠直接在Mac上運行Windows軟件與游戲&#xff0c;而不…

Java架構師之路七、大數據:Hadoop、Spark、Hive、HBase、Kafka等

目錄 Hadoop&#xff1a; Spark&#xff1a; Hive&#xff1a; HBase&#xff1a; Kafka&#xff1a; Java架構師之路六、高并發與性能優化&#xff1a;高并發編程、性能調優、線程池、NIO、Netty、高性能數據庫等。-CSDN博客Java架構師之路八、安全技術&#xff1a;Web安…

[前端]開啟VUE之路-NODE.js版本管理

VUE前端開發框架&#xff0c;以Node.js為底座。用歷史性的項目來學習&#xff0c;為了降低開發環境的影響因素&#xff0c;各種版本號最好能一致。前端項目也是一樣。為了項目能夠快速啟動&#xff0c;Node.js的版本管理&#xff0c;可以帶來很大的便利&#xff08;node.js快速…

2023年全年回顧

本年度比較折騰&#xff0c;整體而言可以分為兩個大的階段&#xff0c;簡單而言&#xff0c;轉崗前和轉崗后。 個人收獲 據說程序員有幾大浪漫&#xff0c;比如操作系統、編譯器、瀏覽器、游戲引擎等。 之前參與過游戲引擎&#xff0c;現在有機會參與存儲業務交付&#xff0c…

LangChain支持嗶哩嗶哩視頻總結

是基于LangChain框架下的開發&#xff0c;所以最開始請先 pip install Langchain pip install bilibili-api-python 技術要點&#xff1a; 使用Langchain框架自帶的Document loaders 修改BiliBiliLoader的源碼&#xff0c;自帶的并不支持當前b站的視頻加載 源碼文件修改&a…

如何在 Emacs Prelude 上使用 graphviz 的 dot 繪制流程圖

文章目錄 如何在Emacs Prelude上使用graphviz的dot繪制流程圖 <2022-08-23 周二> 如何在Emacs Prelude上使用graphviz的dot繪制流程圖 標題中的Emacs Prelude是指&#xff1a;bbatsov/prelude&#xff0c;在custom.el中添加即可&#xff1a; ;;; graphviz (prelude-re…

【高德地圖】Android高德地圖繪制標記點Marker

&#x1f4d6;第4章 Android高德地圖繪制標記點Marker ?繪制默認 Marker?繪制多個Marker?繪制自定義 Marker?Marker點擊事件?Marker動畫效果?Marker拖拽事件?繪制默認 Infowindow&#x1f6a9;隱藏InfoWindow 彈框 ?繪制自定義 InfoWindow&#x1f6a9;實現 InfoWindow…

Java 中 CopyOnWriteArrayList和CopyOnWriteArraySet

什么是CopyOnWriteArrayList和CopyOnWriteArraySet CopyOnWriteArrayList和CopyOnWriteArraySet都是Java并發編程中提供的線程安全的集合類。 CopyOnWriteArrayList是一個線程安全的ArrayList&#xff0c;其內部通過volatile數組和顯式鎖ReentrantLock來實現線程安全。它采用…

解決ios17無法復制的問題

原代碼寫過一片js實現復制的代碼 那段代碼有問題 以下是之前寫的一段有問題的原代碼&#xff1a; let url "kkkkkk";const hiddenTextarea document.createElement("textarea");hiddenTextarea.style.position "absolute";hiddenTextarea.st…

ArcgisForJS如何實現添加含圖片樣式的點要素?

文章目錄 0.引言1.加載底圖2.獲取點要素的坐標3.添加含圖片樣式的幾何要素4.完整實現 0.引言 ArcGIS API for JavaScript 是一個用于在Web和移動應用程序中創建交互式地圖和地理空間分析應用的庫。本文在ArcGIS For JavaScript中使用Graphic對象來創建包含圖片樣式的點要素。 …

MIT-6.824-Lab2,Raft部分筆記|Use Go

文章目錄 前記Paper6&#xff1a;RaftLEC5、6&#xff1a;RaftLAB22AtaskHintlockingstructureguide設計與編碼 2BtaskHint設計與編碼 2CtaskHint question后記 LEC5&#xff1a;GO, Threads, and Raftgo threads技巧raft實驗易錯點debug技巧 前記 趁著研一考完期末有點點空余…