docker 學習筆記2 認識dockerfile自定義鏡像

Dockerfile 概念

Dockerfile 是一個文本文件,但包含所構建容器在運行時候的參數、庫、資源配置。能夠簡單理解爲咱們現有的鏡像,好比Centos/Nginx 但咱們須要構建一個容器的時候,卻須要用一些操做將這兩個鏡像組合在一塊兒,好比要構建一個Nginx容器。html

  1. 那首先須要一個操做系統、好比Centos
  2. 而後在這個操做系統裏面下載NGINX
  3. 配置Nginx 監聽端口等等。

這樣是否是一個容器就構建出來了。這個容器是獨立運行的一個操做系統。nginx

鏡像和容器的關係

鏡像運行起來就成爲了容器。一個鏡像能夠生成多個容器。這就比如是兩種狀態。git

Dockerfile 格式

# 指定基礎鏡像信息
FROM centos:centos7

# 維護者信息
MAINTAINER mrc xxx@qq.com

# 鏡像操做命令 RUN 用來操做
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

RUN yum -y update

RUN yum install -y epel-release

RUN yum install -y nginx

#RUN echo '<h1>hello world docker</h1>' >> /usr/share/nginx/html/index.html

# 容器啓動執行命令
CMD /usr/sbin/nginx

一個Dockerfile 文件包含的內容有這四部分。開始就要指定基礎鏡像信息。以及維護者信息。然後經過RUN 命令執行鏡像操做命令,用來操做基礎鏡像。docker

CMD 指令容許用戶指定容器的默認執行的命令。此命令會在容器啓動且 docker run 沒有指定其餘命令時運行。centos

構建鏡像

經過剛纔的Dockerfile 文件,咱們已經自定義了一個指定的鏡像文件。如今用這個鏡像構建文件來生成一個咱們自定義的鏡像。bash

docker build 命令會根據當前目錄Dockerfile 文件以及上下文構建新的鏡像。curl

上下文所指的是當前目錄或者一個git 倉庫地址。構建上下文會遍歷子目錄遞歸進行處理。能夠經過.dockerignore文件忽略上下文目錄當中的不須要要的子目錄ui

一般在一個新的文件夾下放置Dockerfile 文件進行構建。url

mkdir -p docker

cd docker

vi Dockerfile

## 加入如下內容
FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

# 開始構建 注意有一個點 -t 表明加入標籤
docker build -t test:v1 .

運行鏡像

docker run --name docker_test -d -p 8080:80 test:v1
  • test表示名稱 v1表示標籤或者也叫版本
  • --name 表示運行時候的名稱
  • -d 後臺運行
  • -p 端口映射 將本機8080端口映射到nginx 80端口

訪問本機IP+8080端口
centos7

動態修改

要是我想要修改這個容器內的內容呢?固然也有能夠交互的命令行

docker exec -it docker_test bash
  • -i 即便沒有鏈接,也保持STDIN打開
  • -t 分配給僞TTY
  • bash 即命令處理器

刷新查看內容的改變

查看容器內容的改變

docker diff xxx

容器的操做

### 容器中止
docker container stop name

### 啓動已經中止掉的容器
docker container start xxx

### 重啓容器
docker container restart xxx

參考

https://www.cnblogs.com/ityouknow/p/8588725.html

相關文章
相關標籤/搜索