Docker的簡介以及Dockerfile編寫與使用

Docker的簡介

Docker是在容器的基礎上,進行了進一步的封裝,極大的簡化了容器的建立和維護。使得Docker技術比虛擬機技術更爲輕便、快捷。php

下面是兩張對比圖。 html

能夠看到傳統虛擬機技術是虛擬出一套硬件,而後再在上面運行一個完整的操做系統。然而docker的應用進程直接運行於宿主的內核,容器內沒有本身的內核也沒有硬件虛擬。因此更加輕便。
<br>nginx

Dockerfile的簡單編寫(經常使用指令)

1.FROM

指定基礎鏡像,形如 FROM ubuntu:16.04 (容器將安裝ubuntu16.04)git

2.RUN

用來執行命令,形如 RUN apt-get updatedocker

3.COPY

複製文件,形如COPY flag.php /var/www/html/(COPY 本地路徑 容器內路徑) 能夠使用通配符 * ?apache

4.ADD

更高級的複製文件(能自動解壓縮),形如ADD ubuntu-amd64-root.tar.gz /ubuntu

5.CMD

容器啓動命令,推薦使用exec格式:CMD ["可執行文件", "參數1", "參數2"...] (必定要用雙引號)。形如: CMD ["sh","-c","echo $HOME"]tcp

6.ENV

設置環境變量,形如ENV NODE_VERSION 7.2.0ui

<br>spa

附一個簡單dockerfile
FROM php:7.0-apache

# Meta Information
MAINTAINER Donek1 "A1oe@A1oe.com"

COPY php.ini /usr/local/etc/php/php.ini
COPY index.php /var/www/html/index.php
COPY flag /flag
COPY start.sh /start.sh

RUN chmod +x /start.sh
RUN rm /var/www/html/index.html

CMD ["/start.sh"]

<br>

Dockerfile的使用

1.構建鏡像

docker build -t nginx:v3 . (注意後面有個英文句號)

$ docker build -t nginx:v3 .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM nginx
---e43d811ce2f4

解釋:-t指定的是鏡像名稱nginx:v3,英文句號標識當前目錄

2.查看構建完成的鏡像

docker images / docker image ls

root@ubuntu:~/DockerFiles# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx v1.1 a473544051ce 4 seconds ago 109MB

3.使用鏡像

docker run -t -i -p 8080:80 nginx 解釋:-p指定端口,以上意思是容器的80端口映射到8080端口(須要用虛擬機ip:8080來訪問)

4.中止容器

docker ps -a查看全部容器
docker stop name/id
中止全部container:docker stop $(docker ps -a -q)

5.刪除容器

docker rm name/id(須要先中止)
或者docker rm -f id/name
刪除全部container:docker rm $(docker ps -a -q)

6.刪除鏡像

docker rmi name/id
刪除所有image:docker rmi $(docker images -q)

<br>

常見報錯及解決

1.Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use 端口衝突了 解決: -p 8080:80 (前一個端口爲映射出的端口從80改成8080)

2.刪除untagged images,也就是那些id爲<None>的image:

docker rmi -f id/name 或者
docker rmi $(docker images | grep "<none>" | awk "{print $3}")

3.刪除建立時能夠用id/name,不過用id更方便。 舉例:image id1=asd45xxx ; image id2=4321zx6; 刪除的時候能夠 docker rmi 4,這樣就刪除了id2

<br>

附:docker-compose.yml文件的使用方法
建立:該文件目錄下執行docker-compose build
運行:執行docker-compose up -d

<br> 參考文檔:https://yeasy.gitbooks.io/docker_practice/image/build.html

相關文章
相關標籤/搜索