# 安装
CentOS7 环境
安装 Docker:
# 安装依赖
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 添加 docker 下载仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 安装 docker-ce
sudo yum install docker-ce
# 启动 docker
sudo systemctl start docker
# 设置开机启动
sudo systemctl enable docker
# 验证
sudo docker --version
sudo docker run hello-world
Docker-CE: Docker Community Edition 社区免费版 Docker-EE: Docker Enterprice Edition 企业收费版
安装 Docker-compose:
# 下载最新稳定版 docker-compose
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 分配可执行权限
chmod +x /usr/local/bin/docker-compose
Docker-compose 最新版本及安装方法参考 https://github.com/docker/compose/releases (opens new window), https://docs.docker.com/compose/install/ (opens new window)
# 常用命令
# 查看docker的所有命令
docker
# 查看单个docker命令的帮助,如docker ru --help
docker [command] --help
# Docker 环境查看
docker info
# Docker 服务对应的版本查看
docker version
# 镜像管理
# 搜索所有 centos 的 docker 镜像
docker search centos
# 从 Docker Hub 仓库下载一个 centos 操作系统的镜像
docker pull centos
# 查看 docker 镜像
docker images
# 删除本地镜像(在删除镜像之前需先用 docker rm 删除依赖于这个镜像的所有容器)
docker rmi 99a633ad346f
# 导出镜像到本地文件
docker save centos > /opt/centos.tar.gz
# 导入本地镜像到 docker 镜像库
docker load < /opt/centos.tar.gz
# 容器管理
Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。启动容器有两种方式:
- 基于镜像新建一个容器并启动
- 将在终止状态(stopped)的容器重新启动
新建容器并启动:
# 和本地直接执行 /bin/echo 'Hello,World' 没有什么差别
docker run centos /bin/echo 'Hello,World!'
# 启动一个 bash 终端,允许用户进行交互
docker run --name mycentos -it centos /bin/bash
-i
: 让容器的标准输入保持打开-t
: 让 Docker 分配一个伪终端,并绑定到容器的标准输入上--name
: 给容器定义一个名称/bin/bash
: 启动一个 bash 终端
当利用 docker run
来创建容器时,Docker 在后台运行的标准操作包括:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
启动已终止的容器:
# 启动一个终止的容器
docker start mycentos
# 查看所有容器状态
docker ps -a
守护进程运行:
# -d 参数指定容器在后台以守护态运行
docker run -d centos /bin/bash -c 'while true; do echo "Hello,World!"; sleep 1;done'
# 查看容器的输出信息
docker logs a017e98a7ce8
终止容器:
可以使用 docker stop
来终止一个运行中的容器。
此外,当 Docker 容器中指定的应用终结时,容器也自动终止。 例如对于只启动了一个终端的容器,用户通过 exit
命令或 Ctrl+d
来退出终端时,所创建的容器立刻终止。
终止状态的容器可以用 docker ps -a
命令看到,也可以通过 docker start <ID>
命令来启动容器。
其它:
# 以交互模式启动一个容器
docker run -it [容器ID或容器名称] /bin/bash
# -p 完整的参数为: -p ip:hostport:port,将当前物理机的 ip 的端口映射到容器的端口
docker run -d -p 5000:5000 training/webapp pythonapp.py
# 进入容器,一般对运行着的后台容器,执行该命令
docker exec -it [容器ID] /bin/bash
# 删除容器,正在运行的容器不能删除
docker rm [容器ID或容器名称]
# 强制删除正在运行的容器
docker rm -f [容器ID或容器名称]
# 一次性删除所有容器,慎用
docker rm $(docker ps -q -a)
# 强制终止容器
docker kill [容器ID或容器名称]
# 查看容器的具体信息
docker inspect [容器ID或容器名称]
# 快捷的方式查看容器的端口
docker port [容器ID或容器名称]
# 查看容器的日志
docker logs [容器ID或容器名称]
退出时,使用 [ctrl + D],这样会结束 docker 当前线程,容器结束,可以使用 [ctrl + P + Q] 退出而不终止容器运行
docker exec -it [CONTAINER_NAME or CONTAINER_ID] /bin/bash
会在指定容器中执行指定命令,[ctrl+D] 退出后不会终止容器运行