docker構建 基礎知識總結

2021-09-25 02:02:10 字數 3494 閱讀 1960

總結:docker的推廣必須借助與開發人員的接入,單純的運維人員介入,實際的工作量是很大的。docker適用分布式服務,微服務架構,跑一次性/定時任務。(模糊理解:需要使用虛擬機器的場景,虛擬機器開銷大,docker可以實現替換虛擬的的作用)。乙個映象就是乙個服務,多個映象進行服務配置,埠對映等進行系統組裝。前期配置的工作量是比較大的,後續就只需要修改dockerfile,發布映象,啟動映象等簡單命令(系統簡單的化,本人覺得直接用jenkins進行腳本級的部署還要好一點)(複雜環境用docker才能體現它的特定,否則只能視為乙個虛擬機器,有些情況下還沒有虛擬機器好使用)

工作流程

製作dockerfile–>docker build(編譯成映象)–>push到映象儲存伺服器/pull到部署伺服器–>啟動服務

附上常用命令:

from ubuntu:18.04  #引用初始映象,命令from

label maintainer="[email protected]" ##為自己的映象打上標籤,以便後續查詢及維護

env debian_frontend noninteractive ##在使用apt-get安裝依賴時並非靜默安裝,需要互動,所以無法正常通過,用這條命令可以解決這個問題

run apt-get -qq update ## 執行更新apt-get 的命令

run apt-get -qq install tomcat8 default-jdk ##通過apt-get 安裝tomcat

env catalina_home /usr/share/tomcat8 ##設定環境變數,在後續的檔案種使用

env catalina_base /var/lib/tomcat8

env catalina_pid /var/run/tomcat8.pid

env catalina_sh /usr/share/tomcat8/bin/catalina.sh

env catalina_tmpdir /tmp/tomcat8-tomcat8-tmp

run mkdir -p $catalina_tmpdir

expose 8080 ##對外暴露的埠號

entrypoint [ "/usr/share/tomcat8/bin/catalina.sh", "run" ] ##啟動映象時執run **.sh指令碼的命令

sudo docker built -t name:v1.0.0  ##映象名稱:版本號

sudo docker run -d -p 埠號 --name 映象名稱:版本號 ##啟動服務,不同服務,命令不同

sudo docker exec -ti 容器id /bin/bash ##進入到容器內部

sudo docker stop/rm 容器id ##停止/刪除容器服務

sudo docker images ##檢視映象

sudo docker ps ##檢視執行種的容器

sudo docker push/pull ##上傳或者下拉映象

sudo docker login -u=使用者名稱 -p=密碼 ##登入docker_hub

sudo docker top 程序id ##檢視容器具體的運**況

sudo docker search 映象名稱 -s 次數 ##查詢開源映象,指定超過mark次數的

可能會涉及到的服務安裝命令

busybox:整合了100多個常用linux命令的軟體工具箱。

sudo docker search busybox

sudo docker pull busybox

sudo docker run -it busybox

ssh :commit建立支援ssh服務的映象

1:ubuntu 命令安裝

sudo docker run -it ubuntu:18.04 /bin/bash ##進入容器內部

apt-get update ##

apt-get install openssh-server

mkdir -p /var/run/sshd

/usr/sbin/sshd -d & ##啟動服務

netstat -tunlp ##檢視狀態

sed -ri 's/session required pam_loginuid.so/#session reqiured pam_loginuid.so/g' /ect/pam.dsshd ##取消登入限制

mkdir root/.ssh

ssh -keygen -t rsa 等命令

配置完成後設定指令碼 run.sh

【#!/bin/bash】 /usr/sbin/sshd -d

sudo docker commit fcl sshd:ubuntu ##退出容器,用commit命令儲存乙個新的sshd:ubuntu的映象

sudo docker run -p 10022:22 -d sshd:ubuntu /run.sh

ssh dockerfile 建立映象:

mkdir sshd_ubunru

cd sshd_ubuntu

touch dockerfile run.sh

編輯run.sh

[#!/bin/bash /usr/sbin/sshd -d]

編輯dokcerfile

from ubuntu:18.04

label maintainer="[email protected]"

env debian_frontend noninteractive

run apt-get -qq update ## 執行更新apt-get 的命令

run apt-get -qq install -y openssh-server

run mkdir -p /var/sshd

run mkdir -p /root/.ssh

add anthorized_keys /roo/.ssh/authorized_keys

add run.sh /run.sh

run chmod 755 /run.sh

expose22

cmd ["/run.sh"] ##設定自啟動命令

在宿主主機上生成ssh金鑰:

ssh-keygen -t rsa

cat ~/.ssh/id_rsa.pub > authorized_keys

建立映象:

cd sshd_ubuntu

sudo docker build -t sshd:ubuntu:v1.0.0 .

其餘知識

docker三大技術:

docker-machine,

docker-compose,

docker-swarm

容器之間的網路連線(docker-networking):

sudo docker network ls

相關參考連線:

1:2:

3:4:

5:6:

docker基礎知識

docker 容器引擎 cgroups namespace 服務註冊 服務發現 容器概念早就出現,之後出現docker,docker只是容器技術的一種 docker machine docker swarm docker compose docker daemon 映象 分層 ubuntu aufs...

docker基礎知識 docker學習知識

學習任何乙個開源新技術,首先問自己幾個問題 1.為什要學習它?2.學習它需要了解哪些相關知識點?3.如何快速學習?4.該技術的使用場景是什麼?為什要學習docker?docker是輕量級虛擬化技術,docker使linux容器技術的應用更加簡單和標準化 docker容器啟動時毫秒級的 docker將...

Docker基礎 1 基礎知識

一 docker是什麼 1,為何會有docker出現 方便 環境交付 2,docker理念 一次封裝,到處執行 3,一句話 解決執行環境和配置問題軟體容器,方便做持續整合並有助於整體發布的容器虛擬化技術 二 docker能幹嘛 1,之前的虛擬機器技術 虛擬機器是帶環境安裝的虛擬系統,可以在一種作業系...