Docker學習筆記

2021-08-19 20:51:54 字數 4945 閱讀 5500

#docker常用命令 更多操作 docker --help / docker run --help檢視

#安裝docker

yum install docker-io

#啟動docker

/etc/init.d/docker start    或者service docker start

#檢視docker狀態

service docker status

#查詢centos映象

docker search centos

#獲取centos映象

docker pull centos

#檢視映象

docker images

#檢視docker程序

docker ps -a

#映象操作

#安裝nginx映象, --name名稱為tomnginx, -d後台執行 -p設定docker埠對映到系統埠,

#格式為 系統埠:docker埠, 啟動nginx映象

docker run -d -p 1234:80 --name tomnginx nginx

#進入某個程序

docker attach contain_id或者容器名稱

如果無法進入還可以通過下面的指令碼

#!/bin/bash

# 如果無法通過docker attach containid進入執行中的容器可以通過下面方式

# 查詢程序pid

# 傳入引數

cname=$1

cpid=$(docker inspect -f "}" "$cname")

# 進入容器

nsenter --target "$cpid" --mount --uts --ipc --net --pid

#檢視ip位址, 系統命令 ifconfig也可以

ip ad li

#刪除映象

docker rm contain_id

#將docker資料夾對映到系統, -i互動式, -t字元終端, 容器名稱volumetest

#-h 自定義主機名, -v docker容器內目錄, centos為映象名稱

docker run -it --name testvolume1 -h hostvolume -v /data centos

#檢視testvolume1容器的卷對映到系統的位置,

#-f 格式化format匹配.volumes資訊, testvolume1為容器名稱

docker inspect -f } testvolume1

#docker inspect 映象名稱    //檢視某個映象的配置資訊

#docker的磁碟檔案卷

#自定義docker對映到系統檔案的路徑, -v 系統路徑:docker路徑,

#如果對映的目錄唯讀, 則 -v 系統路徑:docker路徑:ro

docker run -it --name testvolume2 -h hostvolume -v /usr/local/tom:/tom centos

#從已有的映象容器中掛在檔案卷

docker run -it --name testvolume3 --volumes-from testvolume1

#建立自己的映象, -m資訊, 生成自己的映象, 名稱為tom/nginx, tag為v1

#通過docker images檢視自己生成的映象

docker commit -m "this is message" contain_id tom/nginx:v1

#執行自己的映象, 並對映80埠

docker run -d -p 2345:80 --name my-nginx-mirror tom/nginx:v1

#docker的資源隔離

#docker 執行容器測試 --rm 執行完畢刪除,

#stress是乙個壓力測試軟體, 需要安裝, 可以編寫dockerfile安裝, -cpu是stress的引數

docker run -it --rm stress -cpu 1

# -c 是該容器可用cpu的佔比和nginx的weight類似,

# 還可以設定-cpuset-cpus設定可用哪幾個cpu, juti kan help

docker run -it -c 30 --rm stress -cpu 1

#-m 記憶體使用限制, 限制可用128m, 壓力測試是測試200m,

#最多能用128m, 能超過一點如130,多了就無法執行

docker run -it -rm -m 128m stress --vm 1 --vm-bytes 200m --vm-h

# docker 的網路模式, 預設採用橋接 bridge

#檢視docker網橋, 每啟動乙個容器就會建立乙個網路介面inte***ce

brctl show

docker pull registry

#啟動registry倉庫, 對映 系統埠:docker容器埠 , 注意這個registry的容器埠是固定5000的

docker run -d -p 5001:5000 registry

#打包乙個映象用於push到私有倉庫供其他伺服器使用,

#注意 tag後面跟的是映象image, 不是容器名也不是容器id

#可以通過docker ps -a 檢視image列對應的名稱

#打包完畢檢視 docker images

docker tag tom/nginx:v1 192.168.42.1:5001/docker/nginx:v1

# push到私有倉庫, 此時會報錯, 需啟用https或者修改配置

#/etc/sysconfig/docker裡other_args加入--insecure-registry 192.168.42.1:5001

#other_args="--insecure-registry 192.168.42.1:5001" 之後重啟docker

#之前啟動的registry容器要刪掉重新run一次才可以,

#需要pull也要配置other_args加入--insecure-registry 192.168.42.1:5001

docker push 192.168.42.1:5001/docker/nginx:v1

docker pull 192.168.42.1:5001/docker/nginx:v1

#docker自動構建指令碼dockerfile

#docker自動構建指令碼dockerfile, 可以採用原始的手動構建

#docker-compose 是乙個同時可以構建多容器的工具,帶學習

#例:nginx自動化構建指令碼

# this is my first dockerfile

# author tom

# version 1.0

#docker容器內手動安裝構建相關軟體,需要自己安裝, 安裝命令和linux中安裝相同, 通過dockfile可以自動化構建安裝,

#下面這就是乙個dockfile自動化構建安裝nginx的指令碼, 檔名稱是dockerfile, d大寫

#下面大寫部分是關鍵字

#base images 基礎映象來自於

from centos

#維護人

maintainer tomz

add pcre-8.3.7.tar.gz /usr/local/src

add nginx-1.10.0.tar.gz /usr/local/src

#run 執行命令, 安裝相關依賴

run yum install -y wget gcc gcc-c++ make openssl-devel

#新增乙個www使用者不登陸,-m不生成使用者資料夾

run useradd -s sbin/nologin -m www

#工作目錄

workdir /usr/local/src/nginx-1.10.0

#執行安裝nginx

#將daemon off;寫入nginx.conf, 讓nginx在前台執行

run echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf

#把nginx加入到環境變數

env path /usr/local/nginx/sbin:$path

#暴露80埠

expose 80

#執行nginx

cmd ["nginx"]

#執行構建, 在該檔案目錄執行 docker build -t tom/nginx:v2 .

#如果dockfile檔案不在當前目錄那麼要寫全路徑 docker build -t tom/nginx:v2 /usr/local/tom/nginx/dockfile

# -t 是自定義的映象倉庫名稱, 執行完畢構建以後, 執行docker images 檢視即可

# 執行docker run -d -p 3456:80 --name dockfilebuildnginx tom/nginx:v2

#docker web管理介面

docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker

docker學習筆記

1 docker依賴於linux核心,無法直接安裝在windows環境中,否則需要安裝docker toolbox 2 相關操作 docker create 建立乙個容器但是不啟動它 docker run 建立並啟動乙個容器 docker stop id 停止容器執行,傳送訊號sigterm doc...

Docker學習筆記

一 docker是什麼 docker是乙個開源的引擎,可以輕鬆的為任何應用建立乙個輕量級的 可移植的 自給自足的容器。就相當於書包可以裝書,水杯可以盛水。二 docker解決了什麼問題 我本地沒有問題啊 本地和線上的環境不一致問題,哪個哥們又寫死迴圈了 其他專案的出錯不影響你本身的專案 雙十一伺服器...

docker學習筆記

1.怎麼給執行中的docker容器新增新的埠 解決 1 獲得容器ip docker inspect container name grep ipaddress 2 iptable埠 將容器的8000埠對映到主機的8001埠 iptables tnat adocker ptcp dport 8001 ...