從零搭建docker服務

2021-10-09 20:04:08 字數 4379 閱讀 6891

docker是以乙個開源的虛擬化部署工具,能夠讓人從繁雜的專案部署及管理中解脫出來

docker從入門到實踐

之前公司全部用的手動後台啟動,包括內部服務和所用的元件(mysql,redis等),環境多了之後難以管理,出現了而很多痛點。後來決定採用docker改變現狀。

docker

docker-compose,進行多容器應用的部署和管理,用起來會更方便

安裝docker及docker-compose

sudo yum-config-manager --add-repo

sudo yum install -y docker-ce docker-ce-cli containerd.io

sudo systemctl start docker

sudo

curl -l '' -o /usr/local/bin/docker-compose

sudo

chmod +x /usr/local/bin/docker-compose

執行sudo docker run hello-world成功說明docker安裝成功

執行docker-compose version成功說明docker-compose安裝成功

遇到問題可嘗試重啟網路服務:service network restart

docker預設安裝路徑:/var/lib/docker 注:映象和容器也在這裡

docker-compose安裝路徑:/usr/local/bin/docker-compose

docker錯誤建立覆蓋掛載到無效引數

如上所說docker映象和容器的預設儲存位置為/var/lib/docker,但可能會產生磁碟佔滿的情況,從而導致很多錯誤,比如:

為避免這種異常情況發生,可以選擇修改docker映象和容器的儲存位置,以/home/docker/lib為例

1. 停止docker服務   systemctl stop docker

2. mkdir -p /home/docker/lib

3. 如果之前已經有資料在/var/lib/docker,則mv /var/lib/docker/* /home/docker/lib/,否則不用此操作

4. 修改docker配置 vim /usr/lib/systemd/system/docker.service

execstart=/usr/bin/dockerd --graph /home/docker/lib

5. 重新enable 一下docker 服務 重新進行軟連線 以及進行一次 daemon-reload

systemctl disable docker

systemctl enable docker

systemctl daemon-reload

systemctl start docker

6. 檢視docker info資訊

centos解除安裝docker

yum list installed|

grep docker

yum -y remove docker.x86_64 docker-client.x86_64 docker-common.x86_64

rm -rf /var/lib/docker #刪除已存在的映象和容器(以實際情況docker配置路徑而定)

解除安裝docker-compose

sudo

rm /usr/local/bin/docker-compose #刪除二進位制檔案即可

搭建私有企業級docker倉庫

作為企業內部docker服務,考慮到安全性和傳輸速度可靠性,需要搭建私有的docker倉庫,用來儲存企業內部的映象檔案。

目前市場上有兩種docker倉庫供選擇:docker registry 和docker harbor

docker registry是docker官方提供,docker harbor是vmware開源,提供ui介面

相比較而言,docker registry更加輕量,部署更加方便。

docker官方示例:(啟動docker registry通過docker原生啟動)

這裡提供乙個docker-compose方式啟動的yml

version: "3"

services:

registry:

image: registry:2

restart: always

environment:

registry_auth: htpasswd

registry_auth_htpasswd_path: /auth/htpasswd

registry_auth_htpasswd_realm: registry realm

volumes:

- /etc/localtime:/ect/localtime:ro

- /var/lib/registry:/var/lib/registry

- /var/lib/registry/auth:/auth

expose:

- 5000

ports:

- '5000:5000'

以測試環境為示例,生產環境使用新增證書等參見官方文件

配置密碼

docker run --entrypoint htpasswd registry:2.7.0 -bbn testuser testpassword > /var/lib/registry/auth/htpasswd

重新啟動服務:docker-compose up -d

ontainer_linux.go:349: starting container process caused "exec: 「htpasswd」: executable file not found報錯詳解

配置密碼後無法直接通過curl -xget 127.0.0.1:5000/v2/_catalog在伺服器上檢視倉庫中有哪些映象

但可通過瀏覽器訪問登入檢視

檢視映象版本列表:curl -xget 127.0.0.1:5000/v2/image_name/tags/list

將服務打成映象

dockerfile示例:

from ubuntu:16.04

maintainer *** "***@qq.com"

# add project source code

run mkdir /code

add ./hqhttp /code #hqhttp是執行的二進位制檔案

]

makefile示例:

首先需要配置私有registry位址

vim /etc/docker/daemon.json
//多個私服寫法,逗號分隔即可

此處不考慮證書配置

如果私有registry設定密碼,則需要先登入

docker login ip:port

從零搭建 Spring Cloud 服務

springcloud官網 個人建議是用谷歌瀏覽器訪問官網開啟中文翻譯粗略把官網讀一遍 讓乙個超大的服務邏輯,解耦合為乙個個小服務,均勻的分布在各自的伺服器中。微服務就微在這。每個教研組就是乙個微服務集群。他們提供同樣的服務,而註冊中心eureka就是這個存放這個教研組老師名單的地方,學生們想先訪問...

阿里雲ECS伺服器,從零搭建 docker服務環境

一 如果有額外購買資料盤,先檢視這一篇 阿里雲 如何掛載阿里雲esc購買的資料盤 二 查詢selinux的執行模式 關閉模式 getenforce selinux三種模式簡介 enforcing 強制模式。代表selinux在執行中,且已經開始限制domain type之間的驗證關係 permiss...

docker可用gpu從零搭建過程記錄

首先通過nvidia smi命令檢視自己物理機的nvidia驅動版本和cuda版本,確認之後,在以下 中找到對應版本的nvidia cuda映象,ubuntu版本隨意,我選擇了base版,這樣可以保證之後自己搭建好環境,commit成自己的映象時可以更小一些。nvidia cuda images 我...