本文是我經過三個星期業餘時間學習後而寫的文章,對docker的瞭解還處於入門階段。但願本文能幫忙一些想學習docker的朋友快速入門。練習及實戰代碼都在github倉庫中。若是個人文章能幫助到你的話,能夠給個人docker項目點個贊哦javascript
docker是一個開源的應用容器引擎,開發者能夠打包本身的應用到容器裏面,而後遷移到其餘機器的docker應用中,能夠實現快速部署。若是出現的故障,能夠經過鏡像,快速恢復服務。html
舉個例子,公司通常都會有多套環境,那麼如何保持多套的運行環境一致,這個時候就能夠用到docker。且當要求增長一套環境的時候,你無需在一個新服務器上一個個環境安裝、配置。只須要運行下docker。同時官方還提供了Docker Hub,擁有大量的高質量的官方鏡像。你能夠將本身的鏡像上傳上去。有點相似於github
。java
官方提供了安裝教程,挺詳細的。官方安裝教程node
第一步:執行下docker -v
確認下是否成功安裝了dockermysql
若是成功安裝了,命令行將會輸出入docker的版本號。以下:Docker version 18.09.2, build 6247962
git
docker的整個生命週期大體可分爲:github
這裏以ubuntu
鏡像爲例,介紹下鏡像sql
在下載ubuntu
鏡像以前運行下docker images(查看鏡像命令)
查看下本地的鏡像。若是你還沒下載過鏡像的話,固然會出現空。這裏貼下我本地的鏡像docker
➜ study-docker git:(master) ✗ docker images REPOSITORY TAG IMAGE ID CREATED SIZE todolist_static latest de5e325037e9 2 hours ago 1.05GB todolist_nodejs latest 53efd80e03e1 2 hours ago 898MB ubuntu 18.04 7698f282e524 4 weeks ago 69.9MB mysql latest 990386cbd5c0 5 weeks ago 443MB node 8 a5c31320f223 6 weeks ago 895MB mysql 5.6 73829d7b6139 6 weeks ago 256MB
使用拉取鏡像命令docker pull
拉取ubuntu
鏡像:docker pull ubuntu
。當你不指定版本時,默認拉取latest版本。express
➜ study-docker git:(master) ✗ docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu 5b7339215d1d: Pull complete 14ca88e9f672: Pull complete a31c3b1caad4: Pull complete b054a26005b7: Pull complete Digest: sha256:9b1702dcfe32c873a770a32cfd306dd7fc1c4fd134adfb783db68defc8894b3c Status: Downloaded newer image for ubuntu:latest ➜ study-docker git:(master) ✗ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 4c108a37151f 12 hours ago 64.2MB
也可安裝指定版本鏡像:docker pull ubuntu:18.04
接下來基於ubuntu
鏡像啓動一個容器
docker run --name first -it ubuntu bash
運行上面的命令後,命令行工具就會自動進入容器的命令行。若是想要退出該命令行界面,可輸入exit
以退出。
➜ study-docker git:(master) ✗ docker run --name first -it ubuntu bash root@b7862a018c2c:/#
若是想讓該容器在後臺運行能夠經過加-d
配置來讓該容器在後臺運行。後臺運行,命令行工具不會進入該容器。
使用docker ps
查看當前運行中的容器。
➜ study-docker git:(master) ✗ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cf8375f48225 ubuntu "bash" 15 seconds ago Up 14 seconds first
使用-d
來讓容器在後臺運行
➜ study-docker git:(master) ✗ docker run --name first -itd ubuntu bash 6df29a09d1f1bb0041b7eb59b5288162471ed8a663007f88c6a30e3fd1f4fbe2
命令行會返回容器id
使用docker container ls
查看全部容器列表(不包括中止運行的容器)
➜ study-docker git:(master) ✗ docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cf8375f48225 ubuntu "bash" About a minute ago Up About a minute first
使用docker stop <容器id或容器名稱>
中止容器的運行。
➜ study-docker git:(master) ✗ docker stop 6df29a09d1f1 6df29a09d1f1
執行命令後,會返回你剛輸入容器的id。上面的容器id不須要填全。就想git的commit id同樣。
這個時候經過docker container ls
是查不到容器信息的。須要用docker container ls -a
來查看。
➜ study-docker git:(master) ✗ docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6df29a09d1f1 ubuntu "bash" 5 minutes ago Exited (0) 4 minutes ago
能夠看到STATUS一欄處,該容器是處於中止狀態的。
使用docker rm <容器id 或者 容器暱稱>
➜ node git:(master) docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a217eea7188f ubuntu "/bin/bash" 11 seconds ago Exited (0) 10 seconds ago dreamy_ishizaka
執行docker rm a21
(id能夠不輸全)
➜ node git:(master) docker rm a21 a21
執行完以後,命令行會返回以前輸入的容器id
使用docker container prune
,來清空停用狀態的容器。
使用docker exec
命令進入運行中的容器
如想進入剛纔後臺運行的容器的交互式界面:docker exec -it <容器名稱 或者 容器id> bash
➜ study-docker git:(master) ✗ docker exec -it first bash root@2a87b2f62a6e:/#
想查看更多關於docker的命令,點擊這裏
舉個node
鏡像的例子
新建一個文件夾
我這裏就新建一個名爲node的文件夾,具體文件可參照個人github項目的node目錄
// index.js const express = require('express'); const app = express(); app.get('/', (req, res) => { res.end('success') }) app.listen(6001)
// Dockerfile FROM node:8 WORKDIR /home/node COPY ../ ../ RUN npm install CMD npm start
指令介紹
注意 有必要添加.dockerignore文件,文件中能夠填寫你不想打包進容器的文件。相似於.gitignore
// .dockerignore /node_modules package-lock.json
詳細解釋,詳見dockerfile
docker build
命令用於使用 Dockerfile 建立鏡像
執行:docker build -t mynode .
;
要注意後面的. 這個表示Dockerfile文件在當前目錄。
構建鏡像成功以後:
➜ node git:(master) ✗ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mynode latest 3cd10521f802 10 hours ago 898MB
接下來就基於該鏡像運行一個node容器:
docker run --name mynode -p 4001:6001 mynode
➜ node git:(master) ✗ docker run --name mynode -p 4001:6001 mynode > example2@1.0.0 start /home/node > node index.js
瀏覽器訪問localhost:4001
,頁面會展現出node響應的success
字符串了。
構建完鏡像後,你以爲不須要該鏡像,想刪除怎麼辦呢?
首先執行:docker images
列出鏡像列表
➜ node git:(master) ✗ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mynode latest 3cd10521f802 10 hours ago 898MB
使用docker rmi <image id>
來刪除鏡像:docker rmi 3cd10521f802
,若是提醒該鏡像被容器佔用着,那麼你就須要先刪除該容器(參考上面介紹的命令)。