安裝
基本概念
- 鏡像: 一個操作系統(tǒng)
- 容器: 一個操作系統(tǒng)的實例
- 倉庫: 存儲鏡像的地方
鏡像使用
查找鏡像
docker search
獲取鏡像
docker pull ubuntu:18.04
列出本地鏡像
docker image ls
本地占用空間
docker system df
刪除鏡像
docker image rm [鏡像名|鏡像Id]
docker image rm ubuntu
操作容器
啟動
- 運行之后終止
docker run ubuntu:18.04 /bin/echo 'Hello world'
- 進入終端
docker run -t -i ubuntu:18.04 /bin/bash
- 后臺運行
docker run -d ubuntu:18.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
docker run -dit ubuntu
- 后臺運行的容器
docker container ls
- 重新進入
docker exec -it [container id] bash
- 終止后的容器
docker container ls -a
- 啟動終止后的容器
docker container start [container id]
- 終止容器
docker container stop [container id]
- 后臺運行的容器
退出
在容器終端 exit
導出
docker container ls -a
docker export [container id] > ubuntu.tar
導入
$ cat ubuntu.tar | docker import - test/ubuntu:1.0
$ docker image ls
刪除
-
docker container prune
刪除全部終止的容器 -
docker container rm [container id]
刪除終止后的容器 -
docker container rm -f [contaienr id]
刪除正在運行的容器
構(gòu)建鏡像
- 編寫Dockerfile 2. 運行命令
$ mkdir docker;cd docer; touch t/1.txt;vi Dockerfile
// Dockerfile
#以本地 ubuntu 為基礎(chǔ)
FROM ubuntu
#定義變量
ENV VERSION 7.2
#復制本地文件到鏡像里
COPY t/* /root/
#在鏡像里運行shell命令
RUN mkdir /root/test \
&& mkdir /root/test2
&& touch "$VERSION"
$ docker build -t test:1.0 .
$ docker image ls
訪問容器服務(wù)
將本機5000端口映射到容器5000
$ docker run -d -p 5000:5000 training/webapp python app.py
案例
構(gòu)建node服務(wù)器
// 開發(fā)環(huán)境 ubuntu
// ubuntu:18.04 不存在會自動下載
$ docker run -it ubuntu:18.04 /bin/bash
// 進入了ubuntu:18.04 終端
$ apt-get update
$ apt-get install curl; apt-get install vim
// node 安裝 https://github.com/nodejs/help/wiki/Installation#how-to-install-nodejs-via-binary-archive-on-linux
$ cd /root; mkdir server; cd server; npm init -y; npm i koa; vi sever.js;
// server.js---------
const Koa = require('koa')
const app = new Koa()
app.use(async (ctx, next) => {
ctx.set('Access-Control-Allow-Origin','*')
await next();
});
app.use(async (ctx)=>{
ctx.response.body = "<h1>hello</h1>"
})
app.listen(3000);
console.log('app started at port 3000...');
// ----
$ exit
$ docker run -d -p 3000:3000 ubuntu:18.04 /bin/sh -c ". ~/.profile; node /root/server/server.js"
$ docker container logs [container id]
// 返回<h1>hello</h1> 成功了
$ curl 127.0.0.1:3000
$ docker export [container id] > node.tar
// 遷移到其他服務(wù)器時直接導入
$ cat node.tar | docker import - node:1.0
$ docker image ls
// 啟動
$ docker run -d -p 3000:3000 node:1.0 /bin/sh -c ". ~/.profile; node /root/server/server.js"