基本概念
Docker包括三個(gè)基礎(chǔ)概念
-鏡像(Image)
-容器(Container)
-倉(cāng)庫(kù)(Respository)
Docker鏡像
Docker鏡像(Image)秒赤,就相當(dāng)于一個(gè)root文件系統(tǒng)。Docker是一個(gè)特殊的文件系統(tǒng)蓝牲,除了提供容器運(yùn)行時(shí)所需的程序洒闸、庫(kù)轩勘、資源伞芹、配置等資源外,還包含一些為運(yùn)行時(shí)準(zhǔn)備的配置參數(shù)护奈。鏡像不包含任何動(dòng)態(tài)數(shù)據(jù)缔莲,其內(nèi)容在構(gòu)建之后也不會(huì)i被改變。
Docker鏡像
鏡像和容器的關(guān)系霉旗,就像是面向?qū)ο蟪绦蛟O(shè)計(jì)中的類和實(shí)例痴奏。容器可以被創(chuàng)建、啟動(dòng)厌秒、停止读拆、刪除、暫停鸵闪。
Docker Registry
一個(gè)Docker Registry中可以包含多個(gè)倉(cāng)庫(kù)(Repository);,每個(gè)倉(cāng)庫(kù)可以包含多個(gè)標(biāo)簽檐晕;每個(gè)標(biāo)簽對(duì)應(yīng)一個(gè)鏡像。
docker常見命令
創(chuàng)建鏡像
// Dockerfile在當(dāng)前目錄
docker build -t testimage .
創(chuàng)建容器
// 特權(quán)模式創(chuàng)建容器
docker run -t -i --privileged -v /usr/java:/mnt --name ContainerName ImageId /usr/sbin/init
// 采用host網(wǎng)絡(luò)模式創(chuàng)建容器
docker run -t -i -d --privileged -v /usr/java:/mnt --net=host --name Container ImageId /usr/sbin/init
docker端口映射
iptables -t nat -A DOCKER -p tcp --dport 8888 -j DNAT --to-destination 172.17.0.2:8888
獲取端口映射規(guī)則
iptables -t nat -nL --line-number
根據(jù)編號(hào)刪除規(guī)則
iptables -t nat -D DOCKER $num
從容器內(nèi)拷貝文件到宿主機(jī)
docker cp <containerId>:容器的絕對(duì)地址 宿主機(jī)的絕對(duì)地址
從宿主機(jī)拷貝文件容器內(nèi)
docker cp 宿主機(jī)的絕對(duì)地址 <containerId>:容器的絕對(duì)地址
進(jìn)入容器
docker exec -t -i 容器名稱 /bin/bash
導(dǎo)出鏡像
docker save -o 鏡像名稱.tar REPOSITORY(倉(cāng)庫(kù)名稱)
導(dǎo)入鏡像
docker load -i 鏡像名稱.tar
查看容器的ip地址
docker inspect 容器名稱
容器互聯(lián)
docker run -d -p 8888:8888 --name dockerlinkmysql --link mysql5.7:sunmysql dockerlinkmysql /bin/bash
docker設(shè)置固定ip地址
// 查看已經(jīng)定義的網(wǎng)絡(luò)
docker network ls
// 創(chuàng)建自定義網(wǎng)絡(luò)
docker network create --subnet=172.18.0.0/16 mynetwork
// 根據(jù)自定義網(wǎng)絡(luò)創(chuàng)建docker容器
docker run -t -i -d --name networkTest --net mynetwork --ip 172.18.0.2 dockerlinkmysql /bin/bash
docker容器重命名
docker rename oldName newName
ssh連接數(shù)據(jù)庫(kù)蚌讼,并進(jìn)行端口轉(zhuǎn)發(fā)
ssh -L 3306:localhost:3306 jit@223.2.197.240