官方描述
Docker是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。Docker利用Linux核心中的资源分脱机制,例如cgroups,以及Linux核心名字空间,来创建独立的软件容器。
Docker通常用于如下场景:
- web应用的自动化打包和发布;
- 自动化测试和持续集成、发布;
- 在服务型环境中部署和调整数据库或其他的后台应用;
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
官方入门教程https://docs.docker.com/get-started/
支持平台
桌面
Platform | x86_64 |
---|---|
Docker for Mac (macOS) | yes |
Docker for Windows (Microsoft Windows 10) | yes |
服务器
Platform | x86_64/amd64 | ARM | ARM64 / AARCH64 | IBM Power (ppc64le) | IBM Z (s390x) |
---|---|---|---|---|---|
CentOS | yes | yes | |||
Debian | yes | yes | yes | ||
Fedora | yes | ||||
Ubuntu | yes | yes | yes | yes | yes |
基本操作
本文以 Debian/Ubuntu 操作系统作为参考
deb http://http.debian.net/debian jessie-backports main
安装docker
- docker.io包安装
确保已经按照第一步的操作步骤添加了backports源,然后执行下面的命令。
$ sudo apt-get update
$ sudo apt-get install docker.io
确认docker运行是否正常。
$ sudo docker run --rm hello-world
查看docker版本
$ docker version
- 官方的安装脚本一键安装
执行脚本方法如下:
wget -qO- get.docker.com | bash
安装完成后,运行下面的命令,验证是否安装成功。
docker version
启动 Docker
systemctl start docker
查看 Docker 启动状态
systemctl status docker
允许 Docker 开机自启
systemctl enable docker
Debian 如何删除docker?
Debian系统下面删除docker,要按照下面几个步骤来删除。
- 使用purge命令清除docker-io包。
$ sudo apt-get purge docker-io
或者用autoremove命令将不再使用的依赖的包删除掉。
$ sudo apt-get autoremove --purge docker-io
需要注意的是上面的命令只是删除了docker.io包,并不会删除下载的镜像,产生的容器文件,卷,已经用户创建的配置文件。如果你觉得不爽,可以用下面的命令干掉它们:
$ rm -rf /var/lib/docker
然后手工删除创建的配置文件。
备注:docker这个名字已经被占用了,所以debian下面的docker的包的名字是docker.io。
常规卸载/删除 docker
apt-get list installed | grep docker 查看 安装的docker内容
apt-get -y remove docker-* 删除安装的 docker 内容
部署服务
拉取镜像
docker pull ## docker pull teddysun/shadowsocks-libev
查询某个镜像
docker search $name ## docker search redis
检查运行中的镜像
使用docker ps命令可以查看所有正在运行中的容器列表,
docker ps
或者
docker ps -l docker images
使用docker inspect命令我们可以查看更详细的关于某一个容器的信息。
docker inspect
Recap and cheat sheet
## List Docker CLI commands
docker
docker container --help
## Display Docker version and info
docker --version
docker version
docker info
## Execute Docker image
docker run hello-world
## List Docker images
docker image ls
## List Docker containers (running, all, all in quiet mode)
docker container ls
docker container ls --all
docker container ls -aq
创建配置文件
略
启动容器
如范例中,定义的端口是 9000,那么在启动容器时就需要将 9000 端口映射到宿主机的对外端口上。
启动命令:
docker run -d -p 9000:9000 -p 9000:9000/udp --name ss-libev -v /etc/shadowsocks-libev:/etc/shadowsocks-libev teddysun/shadowsocks-libev
docker run:开始运行一个容器。
-d 参数:容器以后台运行并输出容器 ID。
-p 参数:容器的 9000 端口映射到本机的 9000 端口。默认是映射 TCP,当需要映射 UDP 时,那就再追加一次 UDP 的映射。冒号后面是容器端口,冒号前面是宿主机端口,可以写成一致,也可以不一致。
–name 参数:给容器分配一个识别符,方便将来的启动,停止,删除等操作。
-v 参数:挂载卷(volume),冒号后面是容器的路径,冒号前面是宿主机的路径,可以写成一致,也可以不一致。
teddysun/shadowsocks-libev:这是拉取回来的镜像路径。
当然,这里也可以启动 Tag 为 alpine 的镜像命令:
docker run -d -p 9000:9000 -p 9000:9000/udp --name ss-libev -v /etc/shadowsocks-libev:/etc/shadowsocks-libev teddysun/shadowsocks-libev:alpine
注意:此处仅作为演示,不能同时执行上面的这两个启动命令,因为端口都是 9000,产生冲突了。
停止容器
利用如下命令可以停止正在运行中的容器:
docker stop $name
此处的 $name 就是在启动容器那一步定义的容器的识别符
启动容器
利用如下命令可以停止正在运行中的容器:
docker start $name
此处的 $name 就是在启动容器那一步定义的容器的识别符
删除容器
docker rm -f container-id 删除指定容器
docker rm $(docker ps -a -q) 删除所有容器
查看容器日志
docker logs $name
创建镜像
略