Docker ------ 安裝

docker簡介

  • Docker 鏡像(Images)
    Docker 鏡像是用於創建 Docker 容器的模板。
  • Docker 容器(Container)
    容器是獨立運行的一個或一組應用。
  • Docker 客戶端(Client)
    Docker 客戶端通過命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 與 Docker 的守護進程通信。
  • Docker 主機(Host)
    一個物理或者虛擬的機器用於執行 Docker 守護進程和容器。
  • Docker 倉庫(Registry)
    Docker 倉庫用來保存鏡像,可以理解爲代碼控制中的代碼倉庫。
  • Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用。
  • Docker Machine
    Docker Machine是一個簡化Docker安裝的命令行工具,通過一個簡單的命令行即可在相應的平臺上安裝Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

容器運行載體 管理引擎
一次構建處處運行
鏡像 image 類
容器 container 實例
倉庫 registry

容器使用鏡像創建的運行實例

查看 系統信息(版本 內核)

uname -r
cat /etc/redhat-release

docker是怎麼工作的

Docker是一個Client-Server結構的系統,Docker守護進程運行在主機上, 然後通過Socket連接從客戶端訪問,守護進程從客戶端接受命令並管理運行在主機上的容器。 容器,是一個運行時環境,就是我們前面說到的集裝箱。

爲什麼docker比VM快

  1. docker有着比虛擬機更少的抽象層。由亍docker不需要Hypervisor實現硬件資源虛擬化,運行在docker容器上的程序直接使用的都是實際物理機的硬件資源。因此在CPU、內存利用率上docker將會在效率上有明顯優勢。
  2. docker利用的是宿主機的內核,而不需要Guest OS。因此,當新建一個容器時,docker不需要和虛擬機一樣重新加載一個操作系統內核。仍而避免引尋、加載操作系統內核返個比較費時費資源的過程,當新建一個虛擬機時,虛擬機軟件需要加載Guest OS,返個新建過程是分鐘級別的。而docker由於直接利用宿主機的操作系統,則省略了返個過程,因此新建一個docker容器只需要幾秒鐘。

安裝

CentOS 6.8

yum install -y epel-release
yum install -y docker-io
# 安裝後的配置文件/etc/sysconfig/docker
service doceker start

阿里雲
配置加速地址

other_args="--registry-mirrors=https://xxxxx.mirror.aliyuncs.com"
service docker restart
ps -ef|grep docker

CentOS 7

repository

# 先卸載一下已安裝的docker
sudo yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine

# 安裝 組件
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

# 添加 遠程倉庫
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# 安裝docker組件
$ sudo yum install docker-ce docker-ce-cli containerd.io

# docker版本列表
$ yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64  18.06.0.ce-3.el7                    docker-ce-stable

# 安裝對應的版本
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

# 啓動
$ sudo systemctl start docker

# helloworld
$ sudo docker run hello-world

配置加速地址

vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://gxkkh7xj.mirror.aliyuncs.com"]
}


sudo systemctl daemon-reload
sudo systemctl restart docker

網易雲 [http://hub-mirror.c.163.com]

hello world

docker run hello-world

命令

幫助命令

docker info
docker version
docker --help

鏡像命令

docker images
REPOSITORY: 表示鏡像倉庫源
TAG: 鏡像的標籤
IMAGE ID: 鏡像ID
CREATED: 鏡像創建時間
SIZE: 鏡像大小

  • -a: 列出本地所有鏡像(含中間映像層)
  • -q: 只顯示鏡像ID
  • –digests: 顯示鏡像的摘要信息
  • –no-trunc: 顯示完整的鏡像信息
    同一倉庫源可以有多個 TAG,代表這個倉庫源的不同個版本,我們使用 REPOSITORY:TAG 來定義不同的鏡像。
    如果你不指定一個鏡像的版本標籤,例如你只使用 ubuntu,docker 將默認使用 ubuntu:latest 鏡像

docker search [OPTIONAS]某個鏡像名字
搜索鏡像

  • -s [OPTIONAS]: 列出收藏數不小於指定值的鏡像
  • –no–trunc: 顯示完整的鏡像描述
  • –automated: 只列出automated build類型的鏡像

docker pull 某個鏡像名字[:tag]
下載鏡像

docker rmi [OPTIONS]某個鏡像名字[:tag]
刪除鏡像
docker rmi [OPTIONS]某個鏡像名字[:tag] [OPTIONS]某個鏡像名字[:tag] [OPTIONS]某個鏡像名字[:tag]…
docker rmi -f $(docker images -qa)

  • -f: 強制刪除

容器命令

docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
新建並啓動容器
OPTIONS:

  • –name=“容器新名字”: 爲容器定一個名稱
  • -d: 後臺運行容器,並返回容器ID,啓動守護式容器
  • -i: 以交互模式運行容器,通常與 -t 同時使用
  • -t: 爲容器重新分配一個僞輸入終端,通常與 -i 同時使用
  • -P: 隨機端口映射
  • -p: 指定端口映射
    1. ip:hostPort:containerPort
    2. ip::containerPort
    3. hostPort:containerPort
    4. containerPort

docker ps [OPTIONS]
雷處當前所有正在運行的容器
OPTIONS:

  • -a: 列出當前所有正在運行的容器+歷史上運行過的
  • -l: 顯示最近創建的容器
  • -n: 顯示最近n個創建的容器
  • -q: 靜默模式,只顯示容器編號
  • –no-trunc: 不截斷輸出
    使用鏡像centos:latest以交互模式啓動一個容器,在容器內執行/bin/bash命令。
    docker run -it centos /bin/bash

退出容器
exit 容器停止退出

ctrl+P+Q 容器不停止退出

docker start 容器ID或者容器名
啓動容器

docker restart 容器ID或者容器名
重啓容器

docker stop 容器ID或者容器名
停止容器

docker kill 容器ID或者容器名
強制停止容器

docker rm 容器ID
刪除已停止的容器
docker rm -f 容器ID
強制刪除
一次性刪除多個 (列出所有的 容器編號)

  1. docker rm -f $(docker ps -a -q)
  2. docker ps -a -q | xargs docker rm

docker run -d 容器名
啓動守護式容器
docker ps 不存在這個後臺啓動的容器

docker logs -f -t --tail 容器ID
查看容器日誌

  • -t: 加入時間戳
  • -f: 跟隨最新的日誌
  • –tail: 數字顯示最後多少條

docker top 容器ID
查看容器內運行的進程

docker inspect 容器ID
查看容器內部細節

docker exec -it 容器ID bashShell
docker attach 容器ID
進入正在運行的容器並以命令行交互
attach 直接進入容器啓動命令的終端,不會啓動新的進程
exec 在容器中打開新的終端,並且可以啓動新的進程

docker cp 容器ID:容器內路徑 目的主機路徑
從容器拷貝文件到主機上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章