天天看點

ECS訓練營第二天——搭建Docker環境

簡介

Docker 是一個開源的應用容器引擎,基于 Go 語言 并遵從 Apache2.0 協定開源。

Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實作虛拟化。容器是完全使用沙箱機制,互相之間不會有任何接口,更重要的是容器性能開銷極低。

Docker名詞解釋:

鏡像:Docker 鏡像是容器應用打包的标準格式,是建立容器的模闆。

容器:一個通過 Docker 鏡像建立的運作時執行個體,一台主機可運作多個同一鏡像的容器執行個體。

安裝、啟動

  1. 首先開通 阿裡雲ECS資源 ,免費體驗,還在等什麼呢。
ECS訓練營第二天——搭建Docker環境
  1. 連接配接。

用 CMD Powershell Terminal均可, 我在此使用CMD

指令:ssh [username]@[ipaddress]

ECS訓練營第二天——搭建Docker環境
  1. 安裝Docker CE。
# 1. 安裝Docker依賴庫
yum install -y yum-utils device-mapper-persistent-data lvm2
# 2. 安裝Docker CE的軟體源資訊
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 3. 安裝Docker CE
yum makecache fast
yum -y install docker-ce
# 4. 啟動Docker服務
systemctl start docker
# 檢視Docker啟動情況
systemctl status docker           
ECS訓練營第二天——搭建Docker環境

配置鏡像加速

Docker的預設官方遠端倉庫是

hub.docker.com

,由于網絡原因,下載下傳一個Docker官方鏡像可能會需要很長的時間,甚至下載下傳失敗。為此,阿裡雲容器鏡像服務ACR提供了官方的鏡像站點,進而加速官方鏡像的下載下傳。下面介紹如何使用阿裡雲鏡像倉庫。

  1. 使用子賬戶登入阿裡雲。
ECS訓練營第二天——搭建Docker環境

在頁面左側資源欄點選 一鍵複制登入url,在浏覽器中打開。進行RAM使用者登入。

在左側産品與服務中搜尋鏡像。

ECS訓練營第二天——搭建Docker環境

單擊容器鏡像服務,若提示未開通服務,關閉即可。

  1. 單擊【鏡像中心】 > 【鏡像加速器】,可以看到阿裡雲為您提供了一個專屬的鏡像加速位址。
ECS訓練營第二天——搭建Docker環境
  1. 配置Docker倉庫位址為在 【鏡像加速器】中的加速器位址。
[root@i1kzth4Z ~]# ls /etc/docker/
key.json
[root@i1kzth4Z ~]# cat >> /etc/docker/daemon.json << EOF
> {
> "registry-mirrors": ["https://xxxx.aliyuncs.com"]
> }
> EOF
[root@i1kzth4Z ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://xxxx.aliyuncs.com"]
}           
  1. 重新加載配置檔案,重新開機服務。
# 加載配置檔案
systemctl daemon-reload
# 重新開機服務
systemctl restart docker           

Docker常用指令

docker search

根據名字搜尋鏡像

用法:docker search [OPTIONS] TERM

[root@iicxcxq7nz ~]# docker search nginx
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                              Official build of Nginx.                        13942               [OK]                
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1902                                    [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   791                                     [OK]
linuxserver/nginx                  An Nginx container, brought to you by LinuxS…   128                                     
jc21/nginx-proxy-manager           Docker container for managing Nginx proxy ho…   106                                     
tiangolo/nginx-rtmp                Docker image with Nginx using the nginx-rtmp…   101                                     [OK]           

docker pull

從遠端倉庫拉去鏡像

用法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]

[root@iicxcxq7nz ~]# docker pull nginx:latest
latest: Pulling from library/nginx
bb79b6b2107f: Already exists 
111447d5894d: Pull complete 
a95689b8e6cb: Pull complete 
1a0022e444c2: Pull complete 
32b7488a3833: Pull complete 
Digest: sha256:ed7f815851b5299f616220a63edac69a4cc200e7f536a56e421988da82e44ed8
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest           

docker images

檢視本地鏡像清單

用法:docker images [OPTIONS] [REPOSITORY[:TAG]]

[root@iicxcxq7nz ~]# docker images nginx:latest
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              f35646e83998        2 weeks ago         133MB
[root@iicxcxq7nz ~]# docker images
REPOSITORY                                                TAG                 IMAGE ID            CREATED             SIZE
nginx                                                     latest              f35646e83998        2 weeks ago         133MB
mysql                                                     5.7                 42cdba9f1b08        2 weeks ago         448MB
nginx                                                     1.12                4037a5562b03        2 years ago         108MB
           

docker run

通過鏡像開始一個運作執行個體

用法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

[root@iicxcxq7nz ~]# docker run --name mysql \
-p 3306:3306 \
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /home/mysql/logs:/logs \
-v /home/mysql/data/mysql:/var/lib/mysql \ 
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.6 \           

--name

:設定容器執行個體名稱

-p

:主控端與容器端口綁定

-v

:挂載目錄或資料卷,将容器内的檔案夾與主控端檔案夾映射,友善修改容器内的檔案。

-e

:設定容器内MySQL服務Root使用者密碼

-d

:背景守護運作,傳回容器執行個體ID

docker ps

檢視容器

用法:docker ps [OPTIONS]

參數:

-a

:顯示全部

-n <num>

:顯示最新運作的個容器

-l

:顯示最新建立的容器(包括所有狀态)

-q

:僅顯示容器ID

-s

:顯示容器總大小
[root@iicxcxq7nz demo]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
33a5981c417d        nginx:latest        "/docker-entrypoint.…"   8 minutes ago       Up 8 minutes        0.0.0.0:8080->80/tcp   nginx-test
[root@iicxcxq7nz demo]# docker ps -s
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES               SIZE
33a5981c417d        nginx:latest        "/docker-entrypoint.…"   8 minutes ago       Up 8 minutes        0.0.0.0:8080->80/tcp   nginx-test          1.29kB (virtual 133MB)           

搭建Nginx服務

  1. 拉取最新Nginx鏡像。
docker pull nginx:latest           
  1. 運作容器。
docker run --name nginx-test -p 8080:80 -d nginx:latest           

運作結果如下

ECS訓練營第二天——搭建Docker環境
  1. 在浏覽器位址欄輸入

    http://<公網位址>:8080

    通路Nginx服務。
ECS訓練營第二天——搭建Docker環境