Docker安裝

安裝docker

sudo wget -qO- https://get.docker.com/ | sh

將用戶添加到docker用戶組,不用root就可運行docker

$ sudo usermod -aG docker wongyaa

Docker架構

這裏寫圖片描述
這裏寫圖片描述
Docker daemon是核心程序,做各種各樣的docker操作,如下載docker的鏡像,運行容器等。通過客戶端命令交給Docker daemon來做實際操作。
客戶端通過命令通知守護線程,控制鏡像調用容器,並與遠程倉庫交互。

docker命令

這裏寫圖片描述這裏寫圖片描述

調用image進入container命令:

docker run -i -t ubuntu:tag /bin/bash

images和container是什麼

dockerfile方法創建鏡像image

1、創建目錄及文件

mkdir dockertest // 創建一個docker測試目錄
cd dockertest // 進入docker測試目錄
touch Dockerfile // 創建Dockerfile
vim Dockerfile // 對Dockerfile進行編輯

2、文件內容

#基礎類
FROM alpine:latest
#作者
MAINTAINER author
#命令
CMD echo "hello docker!"

3、最後一步

// 創建images, -t:賦予標籤名爲hello_docker
docker build -t hello_docker .
// 查看是否成功生成images
docker images hello_docker
// 運行docker
docker run hello_docker

nginx相關的Dockerfile

創建dockertest目錄,新建Dockerfile文件,內容如下:

#基礎鏡像
FROM ubuntu
#作者
MAINTAINER Wongya
#加速下載,使用國內的鏡像
RUN sed -i 's/archive.ubuntu.com/mirros.ustc.edu.cn/g' /etc/apt/sources.list
#更新程序庫
RUN apt-get update
#安裝nginx,-y表示不提醒
RUN apt-get install -y nginx
#拷貝index.html到容器指定目錄
COPY index.html /var/www/html
#提供容器入口
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
#暴露監聽端口80
EXPOSE 80

同級目錄下創建index.html文件。
運行:

// -t:給出TAG wongya:用戶名
docker build -t wongya/hello-nginx .
// -d:守護進程化 -p:端口映射
docker run -d -p 80:80 wongya/hello-nginx
// 訪問測試
curl http://localhost
命令 用途
FROM base image
RUN 執行命令
ADD 添加文件
COPY 拷貝文件
CMD 執行命令
EXPOSE 暴露端口
WORKDIR 指定路徑
MAINTAINER 維護者
ENV 設置環境變量
ENTRYPOINT 容器入口
USER 指定用戶
VOLUME mount point

Volume

提供獨立於容器之外的持久化存儲


數據卷
數據卷是一個可供一個或多個容器使用的特殊目錄,它繞過 UFS,可以提供很多有用的特性:

  • 數據卷可以在容器之間共享和重用
  • 對數據卷的修改會立馬生效
  • 對數據卷的更新,不會影響鏡像
  • 卷會一直存在,直到沒有容器使用,類似於 Linux 下對目錄或文件進行 mount。

示例1:運行nginx容器,通過-v掛載一個卷

// --name nginx:賦予名字爲nginx
docker run -d --name nginx -v /usr/share/nginx/html nginx
// 列出容器所有相關信息
docker inspect nginx

找到Mounts,Source就是路徑,掛載到容器中的Destination中。
修改文件互相通信。

//進入容器的方法
docker exec -it name /bin/bash

示例2:將本地的一個目錄掛載到容器的一個數據卷中
首先準備好一個html目錄放在當前目錄下並在目錄中寫好一個index.html

// 將當前目錄下的html目錄映射到容器中
docker run -p 80:80 -d -v $PWD/html:/usr/share/nginx/html nginx
// 測試訪問
curl http://localhost
// 在本機host中修改index.html
vi html/index.html
// 測試訪問
curl http://localhost

示例3:創建一個僅有數據的容器,並將這個容器當做一個volume掛載在其他容器裏面去
僅有數據的容器可以被多個容器掛載,做到數據共享

// 創建data目錄
mkdir data
// 將當前目錄下的data目錄創建爲僅有數據的容器,目標目錄爲/var/mydata,名稱定義爲data_container。 ubuntu:容器的基礎鏡像
docker create -v $PWD/data:/var/mydata --name data_container ubuntu
// --volumes-from:從另外的容器掛載, /bin/bash:直接進入容器中
docker run -it --volumes-from data_container ubuntu /bin/bash
// 在mount列出的信息中可以找到自己放入的容器所屬的目錄mydata
mount
// 進入mydata文件夾
cd /var/mydata/
// 隨意創建一個文件
touch whatever.txt
// 退出容器
exit
// 查看data目錄的內容,可以看到剛纔在容器中創建的文件
ls data

鏡像倉庫(Registry)

Registry實際上是一個saas的服務,提供註冊並且存儲鏡像,使大家能夠進行鏡像的共享。

國內的一些倉庫:
daocloud
時速雲
aliyun

Registry交互命令

docker search whalesay // 搜索鏡像
docker pull whalesay // 拉取鏡像 docker
push myname/whalesay // 上傳鏡像

運行docker/whalesay

docker run docker/whalesay cowsay balabala
發佈了23 篇原創文章 · 獲贊 14 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章