由于公司运维推出上线部署采用Docker容器化,进而采用k8s进行集群管理,而作为green hand,觉得有必要记录下在此摸索过程中遇到的坑洼。废话不多说,进入正题。。。。。。
一、Docker简介
- 什么是Docker?
根据Docker官方文档介绍 :Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.【Docker是一个开发、发布和运行应用程序的开放平台。可以将应用程序与基础架构分离,以便快速交付软件;可以像管理应用程序一样管理你的基础设施。利用Docker快速发布、测试和部署代码的方法,可以显著缩短交付时间。】
- Docker与传统虚拟化方式
Docker基础是 Linux 容器(LXC)等技术,其目标是实现轻量级的操作系统虚拟化。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。Docker与传统虚拟化之处是:容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。如下图所示:
- Docker组成
Docker 由镜像(Image)、容器(Container)、仓库(Repository) 三部分组成。
二、Docker安装
本人是基于Linux(Centos7.x)系统安装,注意:新版本只支持Centos7以上,Centos6系统需要安装老版本。
Docker 从 17.03版本之后分为 CE(Community Edition) 和 EE(Enterprise Edition), 我们通过 Yum 可以很方便的在 CentOS7 开发机上安装 Docker-CE 版本。如果Centos系统不支持Yum,快速安装见:Yum安装
1 # Yum 增加 docker-ce 的源
2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3 # 安装 docker-ce
4 yum install -y docker-ce
5 # 开机启动和启动docker
6 systemctl enable docker
7 systemctl restart docker
8 # 验证是否安装成功
9 docker version
三、Docker常用命令【ps:这里以项目中用例来说明】
1 # 使用当前目录的 Dockerfile 创建镜像,标签为 pandora-oauth-service:1.0.0
2 docker build -t pandora-oauth-service:1.0.0 .
3 # 查看所有镜像
4 docker images
5 # 删除镜像
6 docker rmi [OPTIONS] IMAGE [IMAGE...]
7 【OPTIONS:-f, --force 强制删除,IMAGE:可以是IMAGE_ID】
8 # 运行服务
9 docker run -itd --net=host --name=pandora-oauth-service -v /data/pandora-oauth-service/config:/pandora-oauth-service/config -v /data/pandora-oauth-service/logs:/pandora-oauth-service/logs
-p 8104:8104 pandora-oauth-service:1.0.0 这里有个错误,采用了--net=host,就不能使用-p,详情原因见下一篇博客
10 【-d:程序在后台执行,--net=host:容器和宿主机共用网络,--name=xxx,给启动的服务命名,-v: 宿主机的目录挂载到容器内,格式为:宿主机目录:容器目录,-p: 指定端口映射,格式为:主机(宿主)端口:容器端口】
11 # 附着到正在运行的容器
12 docker attach <container_id/container_name>
13 # 进入正在运行的容器内部,同时运行bash(比attach更好用)
14 docker exec -t <container_id/container_name> /bin/bash
15 # 查看日志
16 docker logs [OPTIONS] CONTAINER
17 【OPTIONS:-f : 跟踪日志输出,--since :显示某个开始时间的所有日志,-t : 显示时间戳,--tail :仅列出最新N条容器日志】
18 # 退出
19 exit
20 # 开启|停止|重启容器
21 docker start|stop|restart [OPTIONS] CONTAINER [container_id/container_name]
22 # 删除容器
23 docker rmi [OPTIONS] CONTAINER [CONTAINER ...]
24 # 查看所有运行的容器
25 docker ps
26 # 获取容器/镜像的元数据
27 docker inspect [OPTIONS] NAME|ID [NAME|ID...]