Docker
Tutorials
Introduction
Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Linux post-installation for Docker Engine
The Docker daemon binds to a Unix socket, not a TCP port. By default it's the
root
user that owns the Unix socket, other users can only access it with
sudo
. The Docker daemon always runs as the root
user.
If you don't want to preface the docker
command with sudo
, create a Unix
group called docker
and add users to it.
sudo groupadd docker
sudo usermod -aG docker $USER
Log out and log back in so that your group membership is re-evaluated.
Start on boot.
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
基本概念
- 镜像 (Image)
Docker image,就相当于是一个 root 文件系统。 比如官方镜像 ubuntu:18.04 就包含了完整的一套 Ubuntu18.04 最小系统的 root 文件系统。 Docker image 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等, 还包含一些运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
- 容器 (Container)
镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库 (Repository)
仓库可看成一个代码控制中心,用来保存镜像。
国内镜像
Some mirrors are not active, check link.
创建 or 修改/etc/docker/daemon.json
修改后
systemctl daemon-reload
systemctl restart docker
使用镜像
# pull image
# docker pull [OPTIONS] NAME[:TAG|@DIGEST]
docker pull ubuntu:18.04
# run image
docker run -it -rm ubuntu:18.04 bash
# list images
docker image ls
docker image ls ubuntu
docker image ls redis
# image space usage
docker system df
# remove image
docker image rm ubuntu:18.04
操作容器
docker run ubuntu:18.04 /bin/echo "Hello world"
docker run -t -i ubuntu:18.04 /bin/bash
docker container start
docker container stop