作者:阮一峰
www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
由于虚拟机存在这些缺点,Linux 发展出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC)。
Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。
由于容器是进程级别的,相比虚拟机有很多优势。
总之,容器有点像轻量级的虚拟机,能够提供虚拟化的环境,但是成本开销小得多。
$ docker version
# 或者
$ docker info
$ sudo usermod -aG docker $USER
# service 命令的用法
$ sudo service docker start
# systemctl 命令的用法
$ sudo systemctl start docker
# 列出本机的所有 image 文件。
$ docker image ls
# 删除 image 文件
$ docker image rm [imageName]
$ docker image pull library/hello-world
$ docker image pull hello-world
$ docker image ls
$ docker container run hello-world
$ docker container run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.
... ...
$ docker container run -it ubuntu bash
$ docker container kill [containID]
# 列出本机正在运行的容器
$ docker container ls
# 列出本机所有容器,包括终止运行的容器
$ docker container ls --all
$ docker container rm [containerID]
$ git clone https://github.com/ruanyf/koa-demos.git
$ cd koa-demos
.git
node_modules
npm-debug.log
FROM node:8.4
COPY . /app
WORKDIR /app
RUN npm install --registry=https://registry.npm.taobao.org
EXPOSE 3000
$ docker image build -t koa-demo .
# 或者
$ docker image build -t koa-demo:0.0.1 .
$ docker image ls
$ docker container run -p 8000:3000 -it koa-demo /bin/bash
# 或者
$ docker container run -p 8000:3000 -it koa-demo:0.0.1 /bin/bash
root@66d80f4aaf1e:/app#
root@66d80f4aaf1e:/app# node demos/01.js
# 在本机的另一个终端窗口,查出容器的 ID
$ docker container ls
# 停止指定的容器运行
$ docker container kill [containerID]
# 查出容器的 ID
$ docker container ls --all
# 删除指定的容器文件
$ docker container rm [containerID]
$ docker container run --rm -p 8000:3000 -it koa-demo /bin/bash
FROM node:8.4
COPY . /app
WORKDIR /app
RUN npm install --registry=https://registry.npm.taobao.org
EXPOSE 3000
CMD node demos/01.js
$ docker container run --rm -p 8000:3000 -it koa-demo:0.0.1
$ docker login
$ docker image tag [imageName] [username]/[repository]:
# 实例
$ docker image tag koa-demos:0.0.1 ruanyf/koa-demos:0.0.1
$ docker image build -t [username]/[repository]: .
$ docker image push [username]/[repository]:
$ docker container start [containerID]
$ bash container stop [containerID]
$ docker container logs [containerID]
$ docker container exec -it [containerID] /bin/bash
$ docker container cp [containID]:[/path/to/file] .