阿里的docker容器鏡像網(wǎng)站:https://dev.aliyun.com/search.html?spm=5176.1972343.0.1.55395aaaIRLufN
在centos7中啟動docker會報錯 在/etc/sysconfig/docker 里面--selinux-enabled添加=false
service docker restart
下載鏡像的時候速度不快可以使用阿里云提供的加速器:注冊使用地址https://cr.console.aliyun.com/cn-hangzhou/mirrors 有使用教程
https://svuegzmx.mirror.aliyuncs.com 這個是我的docker鏡像加速地址
使用方法:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
? "registry-mirrors": ["https://svuegzmx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
還有一種方法是修改配置的且在進程中可以看見:find / -name docker.service
centos6:
nano /etc/systemd/system/multi-user.target.wants/docker.service
centos7:
nano /usr/lib/systemd/system/docker.service
找到 ExecStart= 這一行县爬,在這行最后添加加速器地址 --registry-mirror=<加速器地址>
ExecStart=/usr/bin/dockerd-current --registry-mirror=https://svuegzmx.mirror.aliyuncs.com 這個是我的阿里加速?
systemctl daemon-reload
service docker restart
注:對于 1.12 以前的版本存崖,dockerd 換成 docker daemon亏拉。
相關(guān)docker命令:
http://www.reibang.com/c/706a30476702 我的簡書專題
docker search nginx 查看倉庫中nginx的鏡像
docker pull 鏡像名稱(也可以是在之前阿里鏡像上面的地址)
docker images 查看鏡像
docker rmi 鏡像名或鏡像ID
docker inspect 鏡像名或者鏡像id 【包括了很多信息穿扳,路徑端口,存儲位置等】
docker ps [options]
-a:顯示所有容器,包括未運行的
-f:根據(jù)條件過濾顯示內(nèi)容
--format:指定返回值的模板文件
-l:顯示最近創(chuàng)建的容器
-n:列出最近創(chuàng)建的n個容器
--no-trunc:不截斷輸出
-q:靜默模式,只顯示容器編號
-s:顯示總的文件大小
docker ps -aq 顯示所有的容器ID
docker run --name nginx-1 -it -d -p 888:80 nginx
-d:后臺運行容器, 并返回容器ID立润;不指定時, 啟動后開始打印日志, Ctrl + C 退出命令同時會關(guān)閉容器
-p:宿主機到容器的端口映射, 可指定宿主機的要監(jiān)聽的ip, 默認為 0.0.0.0
docker inspect 容器名或者容器ID? 很多信息重要
進入容器 先確保容器運行:docker start 容器id
docker attach 容器id 如果這個容器是裝的centos或者其他系統(tǒng)鏡像這樣可以直接進去
但是這個容器要是裝的是其他服務(wù)比如nginx,tengine等這個時候默認是debian系統(tǒng)要注意
進入容器的方法是:docker exec -it? 容器名 bash
例如:docker exec -it? tengine-1 bash
由于是基于debin的系統(tǒng) 軟件包管理工具請使用 apt-get等方式
使用docker commit 定制鏡像:
不推薦此方法創(chuàng)建鏡像臃腫媳板,原因是安裝的軟件包桑腮,編譯構(gòu)建,等文件
但是當(dāng)你的機器被入侵的可以保留現(xiàn)場
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a:提交的鏡像作者
-c:使用Dockfile指令來創(chuàng)建鏡像
-m:提交時的說明文字
-p:在commit時蛉幸,將容器暫停
前提:存在容器ID
docker commit -a "王上山" -m "這是一個tengine服務(wù)容器的定制鏡像" ab90eebb7b26 tengine-1:v2
docker images 查看鏡像
docker history tengine-1:v2 這個命令查看鏡像內(nèi)的歷史記錄
docker history registry.cn-hangzhou.aliyuncs.com/dtstack/tengine:latest 對之前的鏡像同樣適用
docker history[options] IMAGE
-H:以可讀的格式打印鏡像大小和日期破讨,默認為true
--no-trunc:顯示完整的提交記錄
-q:僅列出提交記錄
定制好鏡像之后,我們嘗試運行該鏡像
docker run --name tengine-2 -it -d -p 8889:80 tengine-1:v2 注意一點要帶tag? tengine-1:v2 運行之后會返回一個容器ID
docker exec -it tengine-2 bash 進入容器
使用Dockfile 定制鏡像:
鏡像的定制實際上就是定制每一層所添加的配置奕纫,文件
可以將每一層的修改提陶,安裝,構(gòu)建匹层,操作的命令寫入腳本隙笆,用該腳本構(gòu)建,定制鏡像
好處是:可以解決無法重復(fù)的問題升筏、鏡像構(gòu)建透明性的問題撑柔、體積的問題
Dockerfile 是一個文本文件,其內(nèi)包含了一條條的指令(Instruction)您访,每一條指令構(gòu)建一層铅忿,因此每一條指令的內(nèi)容,就是描述該層應(yīng)當(dāng)如何構(gòu)建灵汪。
此處舉例使用Dockerfile定制nginx鏡像
步驟一:空白目錄中檀训,建立文本文件柑潦,并命名為Dockerfile
$ mkdir mynginx
$ cd mynginx/
$ touch Dockerfile
步驟二:編寫腳本
FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
FROM 指定基礎(chǔ)鏡像,必須是腳本中第一條指令肢扯,必備指令
RUN? 執(zhí)行指令分為兩種格式:
shell格式:
shell 格式:RUN <命令>妒茬,就像直接在命令行中輸入的命令一樣。剛才寫的 Dockrfile 中的 RUN 指令就是這種格式蔚晨。
舉例:RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
exec格式:
exec 格式:RUN ["可執(zhí)行文件", "參數(shù)1", "參數(shù)2"],這更像是函數(shù)調(diào)用中的格式肛循。
舉例:
FROM debian:jessie
RUN buildDeps='gcc libc6-dev make' \
&& apt-get update \
&& apt-get install -y $buildDeps \
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" \
&& mkdir -p /usr/src/redis \
&& tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \
&& make -C /usr/src/redis \
&& make -C /usr/src/redis install \
&& rm -rf /var/lib/apt/lists/* \
&& rm redis.tar.gz \
&& rm -r /usr/src/redis \
&& apt-get purge -y --auto-remove $buildDeps
僅僅使用RUN指令铭腕,并且使用&&串聯(lián)指令,這并不是在寫shell腳本多糠,而是在定義每一層該如何構(gòu)建
支持 \ 換行累舷,縮進,注釋
最后一組命令添加了清理工作的命令夹孔;刪除了為了編譯構(gòu)建所需的軟件被盈,清理所有下載,展開的文件搭伤,清理了apt緩存文件只怎,這是很重要的一步,我們之前說過怜俐,鏡像是多層存儲身堡,每一層的東西并不會在下一層被刪除,會一直跟隨著鏡像拍鲤。因此鏡像構(gòu)建時贴谎,一定要確保每一層只添加真正需要添加的東西,任何無關(guān)的東西都應(yīng)該清理掉
以上已經(jīng)完成腳本的構(gòu)建
步驟三:構(gòu)建鏡像:
docker build [選項] <上下文路徑/URL/->
docker build -t dockerfile-1 .
. 代表當(dāng)前目錄
構(gòu)建完畢
docker images