Docker概念簡介

一、docker的三大核心概念

image.png

圖片來自:什么是docker鏡像? - 網易云的回答 - 知乎
https://www.zhihu.com/question/27561972/answer/230398763

鏡像(Image)

Docker鏡像類似于虛擬機鏡像,可以將它理解為一個只讀的模板。

容器(Container)

類似與一個輕量級的沙箱,docker利用容器來運行和隔離應用。簡易版的linux環(huán)境(包括root用戶權限、進程空間、用戶空間和網絡空間)以及運行在其中的應用程序打包而成的盒子。

倉庫(Repository)

docker集中存放鏡像的場所,通過不同的標簽(tag)來區(qū)分。

二、安裝docker

CentOS 7下安裝Docker,Docker CE支持64位CentOS7,并且要求內核版本比低于3.10.

1.卸載舊的版本:

# yum remove docker docker-common docker-selinux docker

2. 使用yum安裝:

# yum install -y yum-utils device-mapper-persisten-data lvm

3.安裝最新版Docker CE:

# yum-config-manager --enable docker-ce-edge
# yum install docker-ce

4.啟動Docker CE

# systemctl enable docker
# systemctl start docker

5.測試Docker 是否安裝正確

# docker run hello-word

三、獲取鏡像

1. 從docker 鏡像倉庫獲取鏡像

# Usage: docker pull [OPTIONS] [Docker Registry NAME[:TAG]

命令幫助: docker pull --help
鏡像名稱格式:
Docker鏡像倉庫地址:地址的格式一般是 <域名/IP>[:端口號]。默認地址是Docker Hub
倉庫名稱:兩段式名稱,即<用戶名>/<軟件名>。如果不給出默認為library,也就是官方鏡像。

Example:

[root@localhost ~]# docker pull mysql
Using default tag: latest
Trying to pull repository docker.io/library/mysql ...

2.運行容器

docker run -it
-i:交互式操作
-t:終端,

3.常見的鏡像命令操作

列出鏡像:
    # docker image ls
    # docker images 
列出懸掛鏡像:
    docker image ls -f dangling=true 
刪除懸掛鏡像:
    docker image prune
中間層鏡像:
刪除本地鏡像:
    # docker image rm [選項] <IMAGE1> <IMAGE2>
使用tag命令為鏡像添加標簽:
    # docker tag nginx:latest mynginx:latest
查看鏡像詳細信息:
    # docker inspect nginx:latest
查看鏡像歷史:
    # docker history nginx
    IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
    ae513a47849c        5 days ago          /bin/sh -c #(nop)  CMD ["nginx" "-g" "daem...   0 B
    <missing>           5 days ago          /bin/sh -c #(nop)  STOPSIGNAL [SIGTERM]         0 B
    <missing>           5 days ago          /bin/sh -c #(nop)  EXPOSE 80/tcp                0 B
    <missing>           5 days ago          /bin/sh -c ln -sf /dev/stdout /var/log/ngi...   0 B
    <missing>           5 days ago          /bin/sh -c set -x  && apt-get update  && a...   53.7 MB
    <missing>           5 days ago          /bin/sh -c #(nop)  ENV NJS_VERSION=1.13.12...   0 B
    <missing>           5 days ago          /bin/sh -c #(nop)  ENV NGINX_VERSION=1.13....   0 B
    <missing>           5 days ago          /bin/sh -c #(nop)  LABEL maintainer=NGINX ...   0 B
    <missing>           7 days ago          /bin/sh -c #(nop)  CMD ["bash"]                 0 B
    <missing>           7 days ago          /bin/sh -c #(nop) ADD file:ec5be7eec56a749...   55.3 MB

刪除鏡像:
    # docker rmi IMAGE [IMAGE...]
    eg: docker rmi nginx:latest
創(chuàng)建鏡像:
    # docker commit [OPTIONS] CONTAINER [REPOSITORY:[TAG]]
    -a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
    -c, --change list      Apply Dockerfile instruction to the created image (default [])
    --help             Print usage
    -m, --message string   Commit message
    -p, --pause            Pause container during commit (default true)
基于本地模板導入: 
    # docker import [OPTIONS] file|[URL]|- [REPOSITORY[:TAG]]
    eg: cat nginx:latest.tar.gz | docker import - nginx:v1
存儲鏡像:
    eg:
        docker save -o nginx:v2.tar nginx:latest
        docker load --input nginx:v2.tar 
        docker load < nginx:v2.tar
上傳鏡像:
    docker push NAME[:TAG] | [RE]

4.刪除鏡像的特殊用法

(1) 刪除所有倉庫名為redis的鏡像:
# docker image rm $(docker iamge ls -q redis)
(2) 刪除所有在mongo:3.2之前的鏡像:
# docker image rm $(docker image ls -q -f before=mongo:3.2)

四、遇到的問題

1.docker啟動報錯

overlay: the backing xfs filesystem is formatted without d_type suppor

解決方法: 修改docker-storage為devicemapper

vim /etc/sysconfig/docker-storage
DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper"

2.pull 鏡像的時候遇到以下報錯

Get https://registry-1.docker.io/v2/library/python/manifests/2.7http: TLS handshake timeout

解決方法:設置docker鏡像加速器
Configure the Docker daemon
Either pass the --registry-mirror option when starting dockerd manually, or edit /etc/docker/daemon.json and add the registry-mirrors key and value, to make the change persistent.
{
"registry-mirrors": ["https://<my-docker-mirror-host>"]
}
https://docs.docker.com/registry/recipes/mirror/#what-if-the-content-changes-on-the-hub
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Docker學習筆記(一)Docker初體驗 什么是Docker Docker是一個虛擬環(huán)境容器,可以將開發(fā)環(huán)境、...
    陳豐堯閱讀 1,103評論 0 1
  • 原文地址:LoveDev Docker相對于傳統(tǒng)意義上的虛擬機最大的區(qū)別就在于傳統(tǒng)虛擬機是虛擬出一套硬件后,再在上...
    KevinLive閱讀 3,841評論 3 7
  • 轉載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,755評論 0 120
  • 建議學習過程 @S_gy_Zetrov--一篇很棒的入門教程 Docker — 從入門到實踐--粗略的看下,各個名...
    mrlevo520閱讀 2,527評論 1 6
  • 葉子仿佛收到了指令 一夜之間紛紛墜下 織出一條錦繡的路 常青的松 姿態(tài)卻更加莊重 太陽突然地心事重重 不肯展露她的...
    暗香盈夢閱讀 285評論 0 3

友情鏈接更多精彩內容