1.docker介绍和安装
1.1 docker简介
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 包括三个基本概念:
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
其关系如下图:
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
1.2 Ubuntu docker 安装
1.2.1、使用官方安装脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
curl -sSL https://get.daocloud.io/docker | sh
1.2.2、手动安装
1.卸载旧版本:sudo apt-get remove docker docker-engine docker.io containerd runc
2.使用仓库安装:
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
1.3 CentOS Docker 安装
1.3.1、使用官方安装脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
curl -sSL https://get.daocloud.io/docker | sh 同ubutun
1.3.2、手动安装:
安装所需的软件包:
$ **sudo** **yum install** -y yum-utils \
device-mapper-persistent-data \
lvm2
注:yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
安装镜像源:选择阿里或清华的
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
阿里源
sudo yum-config-manager \
--add-repo \
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
清华源
1.4、安装 Docker Engine-Community
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker 启动 Docker
sudo docker run hello-world 验证是否正确安装了 Docker Engine-Community
1.5、卸载 docker
yum remove docker-ce
rm -rf /var/lib/docker
2.docker 基本操作和组件
2.1 docker 容器使用
docker pull ubuntu 拉取镜像
docker run -it ubuntu /bin/bash 启动容器
docker ps -a 查看所有容器
docker stop/start/restart <容器 ID> 停止/启动/重启动 容器
docker exec -it 243c32535da7 /bin/bash 进入容器(推荐使用)
2.2 docker 镜像使用
基本操作:
docker images 查看镜像列表
docker search/pull/run/rmi httpd 查找/拉取/运行/删除 镜像
创建镜像
当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
- 1、从已经创建的容器中更新镜像,并且提交这个镜像
- 2、使用 Dockerfile 指令来创建一个新的镜像
更新镜像:1.创建一个容器 2.容器内使用 apt-get update 命令进行更新 3.docker commit 来提交容器副本
4.查看我们的新镜像 5,用新镜像 runoob/ubuntu 来启动一个容器
构建镜像:1.创建一个 Dockerfile 文件 2.通过 docker build 构建一个镜像 3.docker images 查看创建镜像
4 .使用新镜像创建容器 5.设置镜像标签docker tag
runoob@runoob:~$ docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
---> Using cache
---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
---> Using cache
---> 0397ce2fbd0a
Step 4 : RUN useradd runoob
docker images
docker run -t -i runoob/centos:6.7 /bin/bash
docker tag 860c279d2fec runoob/centos:dev
2.3 docker 目录挂载
docker 文件映射
docker run -it -v /root/code:/data/code xxx /bin/bash
显示Docker容器挂载目录信息
docker inspect 369a1376f78c | grep Mounts -A 50
2.4 docker compose学习和使用
Compose 简介:
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
Compose 安装:
Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。
运行以下命令以下载 Docker Compose 的当前稳定版本:
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2.5 docker数据卷
1) docker volume create 命令用于创建新卷。默认情况下,新卷创建使用 local 驱动,但是可以通过 -d 参数来指定不同的驱动。
2) docker volume ls 会列出本地 Docker 主机上的全部卷。
3) docker volume inspect 用于查看卷的详细信息。可以使用该命令查看卷在 Docker 主机文件系统中的具体位置。
4) docker volume prune 会删除未被容器或者服务副本使用的全部卷。 5) docker volume rm 删除未被使用的指定卷。
3.docker 高级操作
参见资料:https://blog.youkuaiyun.com/m0_53157173/article/details/123192114
3.1 具名挂载和匿名挂载的区别
具名挂载:挂载到指定名称的目录;
# /xxx 是目录, xxx是卷名,没有斜杆的就是卷名
docker run -d -v 卷名:容器目录 tomcat
匿名挂载:匿名挂载是只有容器目录,没有宿主机的目录,所以生成出来的目录是一个长长的加密字符串,一般情况下不建议使用匿名挂载;加密字符串会导致不易查找;
docker run -d -v \容器目录 tomcat
3.2 查看docker运行日志
docker 容器再启动运行时就如IDE启动程序一样,会在容器中存储运行的日志,我们可以透过docker logs将其打印出来,以便于我们调试和查看错误所在位置,具体的命令参数如下:
docker logs [OPTIONS] CONTAINER
Options:
–details 显示更多的信息
-f, --follow 跟踪实时日志
–since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
–tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
–until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
比如我们可以直接跟踪容器实时日志:
docker logs -f +容器名
我们还可以打印最后100条日志:
docker logs -tail 100 +容器名
我们还可以查看一定时间内的日志:
docker logs --since 30m CONTAINER_ID