1. 概念 1. 鏡像 包含文件系統的面向Docker引擎的只讀模板,給應用程式提供運行環境。CentOS、Ubuntu鏡像指裝載有該操作系統的模板,也可以在這之上裝一些軟體,例如Nginx鏡像,Flask鏡像等。 2. 容器 容器是指鏡像創建的實例,相當於一個輕量級的虛擬機,Docker利用容器來 ...
1. 概念
1. 鏡像
包含文件系統的面向Docker引擎的只讀模板,給應用程式提供運行環境。CentOS、Ubuntu鏡像指裝載有該操作系統的模板,也可以在這之上裝一些軟體,例如Nginx鏡像,Flask鏡像等。
2. 容器
容器是指鏡像創建的實例,相當於一個輕量級的虛擬機,Docker利用容器來運行程式,並隔離每個應用。
3. 倉庫
指鏡像倉庫,集中存取Docker鏡像文件的倉庫,每個倉庫一般只存放一類鏡像,使用tag區分。
2. 基礎操作
1. 安裝/刪除操作
官方註冊伺服器:hub.docker.com
每個倉庫有多個鏡像,在倉庫pull時需要用tag標識,不加預設pull latest鏡像文件
docker search nginx #查看nginx鏡像文件
docker pull nginx #pull鏡像
docker images #查看當前系統鏡像
docker rm -f <containerid> #刪除指定容器
docker save -o 鏡像名 username/倉庫名:tag # 保存鏡像
docker load -i 鏡像名 # 載入鏡像
2. 運行等操作
docker run -it nginx:latest /bin/bash #啟動一個容器
#-i表示打開並保持stdout,-i表示分配一個終端
[ctrl+p] [ctrl+q] #退出當前容器
docker ps -a #查看docker中正在運行的容器
docker start-i和-t。前者表示打開並保持stdout,後者表示分配一個終端 #啟動一個容器但不進入
docker attach container_name/container_id #進入一個容器
docker stop container_name/container_id #暫停
docker restart container_name/container_id #重啟
3. 打包容器
docker commit -m "message" -a "username" <containerID> 用戶名/倉庫名:tag #打包一個容器為鏡像
docker login #登錄dockerhub
docker push 用戶名/倉庫名:tag #push到dockerhub
4. dockerfile相關
dockerfile是docker的配置文件,指定docker build操作的時候執行的操作
# 說明該鏡像以哪個鏡像為基礎
FROM ubuntu:latest
# 構建者的基本信息
MAINTAINER username
# 在build這個鏡像時執行的操作
RUN apt-get update
RUN apt-get install vim
# 拷貝本地文件到鏡像中
COPY ./* /usr/share/gitdir/
使用docker build構建鏡像
docker build -t="username/倉庫名:tag" .
#-t 指定新鏡像的用戶信息,倉庫名tag,最後一個參數表示在當前目錄找dockerfile文件
docker build -t ImageName:TagName dir
#-t表示給鏡像加tag,dir表示docker文件的位置
3. Docker Compose
Docker Compose是一個Docker容器管理工具,通過docker-compose.yml
文件管理,可以同時啟動多個容器
1. 安裝
- 下載
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 文件改為可執行
sudo chmod +x /usr/local/bin/docker-compose
- 確認是否成功
sudo docker-compose --version
2. 使用
- 配置
docker-compose.yml
version: '3'
services:
# nginx 服務
nginx:
# 推薦使用官方鏡像
image: nginx:latest
# 映射埠,把容器埠映射到宿主機對外介面,格式:對外埠:容器埠
ports:
- "80:80"
- "443:443"
# 所依賴的服務,php會先啟動
depends_on:
- php
# php 服務
php:
# 官方鏡像
image: php:7-fpm
- 啟動多個服務
sudo service docker start #docker啟動
sudo docker-compose up -d #運行docker-compose,並切換到docker-compose.yml文件所在目錄
#這時候會自動下載並運行nginx,php這兩個容器
docker ps #查看正在運行的容器