一, Docker 介绍
Docker 介绍
Docker 是一个开源的应用容器引擎, 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中, 然后发布到任何流行的 Linux 机器上, 也可以实现虚拟化. Docker 是通过内核虚拟化技术 (namespaces 和 cgroups) 来提供容器的资源隔离与安全保障. 容器是完全使用沙箱机制, 相互之间不会有任何接口. 基于 go 语言并遵从 Apache2.0 协议开源.
Docker 官方网站 https://www.docker.com/
Docker 官方文档 https://docs.docker.com/
Docker 组成
Docker Client:CLI 命令
Docker Server: 守护进程
Docker 组件
(与虚拟机进行对比)
Docker Image 镜像: 静态概念, 把应用, 代码和所需应用库 (Bins/Libs) 运行环境进行封装和打包
Docker Container 容器: 动态概念, 从镜像创建的一个实例, 容器之间相互隔离, 可进行启停, 创建和删除操作
Docker Repository 仓库: 存放镜像
Docker 特点
可管理性: 单进程, 不建议启动 SSH
前台运行进程, 进程结束时容器停止, Docker 只实现进程级别的隔离(虚拟机实现操作系统级别的隔离)
基于 C/S 架构: Server 端服务中断则运行于其上的所有容器停止
简化配置与快速部署: 应用与运行环境进行打包, 快速产品交付, 可同时进行多个版本测试
不可变理论: 原来的不改动, 重新创建新的, 保证环境一致性
支持微服务架构: 自动化扩容, Docker 在京东的应用
二, Docker 安装
安装 Docker Community Edition (CE)
- cd /etc/yum.repos.d/ && wget https://download.docker.com/linux/centos/docker-ce.repo
- yum install docker-ce docker-ce-cli containerd.io -y
查看 docker 版本
docker -v
查看 docker 命令帮助
- docker --help
- docker inspect --help
Docker 安装官方教程
三, Docker 基本使用
Docker Server 相关命令
查看 Docker Server 守护进程运行状态
- systemctl status docker
- systemctl start docker
Docker 镜像管理相关命令
显示当前所有镜像
docker images
搜索 docker 镜像
- docker search nginx
- docker search CentOS
拉取 / 下载 docker 镜像
- docker pull CentOS
- docker pull nginx
以 tar 格式导出本地 docker 镜像
docker save -o nginx.tar nginx
导入本地 docker 镜像
docker load -i nginx.tar
删除 docker 镜像
docker rmi <IMAGE ID>
四, Docker 容器相关命令
Docker 容器管理方式
通过 docker 容器的 CONTAINER ID
通过 docker 容器的 NAMES
Docker 容器相关命令
查看所有 docker 容器及状态
- docker ps -a
- # 只显示运行中的容器
- docker ps
启动 docker 容器, 并执行 echo 命令, 最后容器进入停止状态
- docker run --name mycentos CentOS /bin/echo "abc"
- # 命令格式, 注意镜像名称放在所有参数的后面
- #docker run [ARG...] IMAGE [COMMAND] [ARG...]
- #--rm 表示容器停止后删除
- docker run --rm CentOS /bin/echo "abc"
启动 docker 容器, 分配 TTY 和打开容器的标准输入
- docker run --name mycentos -t -i CentOS /bin/bash
- # 然后进入该容器执行命令
- ps aux
- # 显示的是物理机状态(说明 docker 只实现进程级别的隔离)
- cat /proc/cpuinfo
- free -h
- exit
重新启动指定容器
docker start mycentos
容器执行指定命令
- docker exec mycentos ps -aux
- docker exec mycentos w
删除容器
- docker rm mycentos
- #-f 强制删除运行中的容器
- docker rm -f mycentos
五, 进入指定容器
方法一
- # 首先安装 util-Linux 工具包, 包含 nsenter 工具
- yum install util-Linux -y
- # 获取容器的 PID
- docker inspect -f {
- {
- .State.Pid
- }
- } mycentos
- # 进入命名空间, nsenter --help
- nsenter -t <PID> -m -u -i -n -p
- ps -ef
- # 不会直接退出 docker, 因为 nsenter 创建了一个线程
- exit
对方法一进行优化: 编写 shell 脚本
- [root@Linux-202 ~]# cat docker_in.sh
- #!/bin/bash
- #Use Docker name and nsenter tool to attach Docker.
- DOCKER_NAME=$1
- DOCKER_PID=`docker inspect -f {{.State.Pid}} $DOCKER_NAME`
- nsenter -t $DOCKER_PID -m -u -i -n -p
- [root@Linux-202 ~]# chmod +x docker_in.sh
- [root@Linux-202 ~]# ./docker_in.sh mycentos
方法二
- docker attach mycentos
- # 会直接退出 docker
- exit
方法三
docker exec -i -t mycentos /bin/bash
来源: http://www.bubuko.com/infodetail-2955977.html