Docker使用指南-1

阿里的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。

相關docker命令:

http://www.itdecent.cn/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 退出命令同時會關閉容器

-p:宿主機到容器的端口映射, 可指定宿主機的要監(jiān)聽的ip, 默認為 0.0.0.0

docker inspect 容器名或者容器ID? 很多信息重要

進入容器 先確保容器運行:docker start 容器id

docker attach 容器id 如果這個容器是裝的centos或者其他系統(tǒng)鏡像這樣可以直接進去

但是這個容器要是裝的是其他服務比如nginx,tengine等這個時候默認是debian系統(tǒng)要注意

進入容器的方法是:docker exec -it? 容器名 bash

例如:docker exec -it? tengine-1 bash

由于是基于debin的系統(tǒng) 軟件包管理工具請使用 apt-get等方式

使用docker commit 定制鏡像:

不推薦此方法創(chuàng)建鏡像臃腫,原因是安裝的軟件包,編譯構建,等文件

但是當你的機器被入侵的可以保留現(xiàn)場

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

-a:提交的鏡像作者

-c:使用Dockfile指令來創(chuàng)建鏡像

-m:提交時的說明文字

-p:在commit時,將容器暫停

前提:存在容器ID

docker commit -a "王上山" -m "這是一個tengine服務容器的定制鏡像" 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 定制鏡像:

鏡像的定制實際上就是定制每一層所添加的配置,文件

可以將每一層的修改,安裝,構建,操作的命令寫入腳本,用該腳本構建,定制鏡像

好處是:可以解決無法重復的問題、鏡像構建透明性的問題、體積的問題

Dockerfile 是一個文本文件,其內(nèi)包含了一條條的指令(Instruction),每一條指令構建一層,因此每一條指令的內(nèi)容,就是描述該層應當如何構建。

此處舉例使用Dockerfile定制nginx鏡像

步驟一:空白目錄中,建立文本文件,并命名為Dockerfile

$ mkdir mynginx

$ cd mynginx/

$ touch Dockerfile

步驟二:編寫腳本

FROM nginx

RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

FROM 指定基礎鏡像,必須是腳本中第一條指令,必備指令

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腳本,而是在定義每一層該如何構建

支持 \ 換行,縮進,注釋

最后一組命令添加了清理工作的命令;刪除了為了編譯構建所需的軟件,清理所有下載,展開的文件,清理了apt緩存文件,這是很重要的一步,我們之前說過,鏡像是多層存儲,每一層的東西并不會在下一層被刪除,會一直跟隨著鏡像。因此鏡像構建時,一定要確保每一層只添加真正需要添加的東西,任何無關的東西都應該清理掉

以上已經(jīng)完成腳本的構建

步驟三:構建鏡像:

docker build [選項] <上下文路徑/URL/->

docker build -t dockerfile-1 .

. 代表當前目錄

構建完畢

docker images

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容