一、Docker简介
1.1概念
Docker是一个应用容器引擎,基于Go语言实现。主要用于打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到Linux机器上。
1.2应用场景
(a) Web 应用的自动化打包和发布。
(b) 自动化测试和持续集成、发布。
(c) 在服务型环境中部署和调整数据库或其他的后台应用。
(d) 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
1.3特点
(a) 容器是完全使用沙箱机制,相互隔离
(b) 容器性能开销低
1.4docker架构
(a) 镜像image
本质是一个分层的文件系统,最底端是bootfs,第二层是root文件系统rootfs,然后再往上可以叠加其他的镜像,如图所示:
(b) 容器container
容器是镜像运行时的实体,容器通过 Docker 镜像来创建,关系类似于面向对象编程中的对象与类。镜像是类,是具备某些共同特征的实体的集合。容器是对象,是一个具体的概念,是独立运行的一个或一组应用。
(c) 仓库repository
是一个代码控制中心,用来保存镜像。
二、安装与卸载
首先,由于Docker 依赖于已存在并运行的 Linux 内核环境,所以Docker 必须部署在 Linux 内核的系统上。
2.1 docker安装步骤
(a) yum包更新到最新 yum update
(b) 安装需要的软件包 yum install -y yum-utils device-mapper-persistent-data lvm2
(c) 设置yum源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
(d) 安装docker yum install -y docker-ce
(e) 查看docker版本,验证是否安装成功 docker -v
2.2 配置docker镜像加速器
可以通过修改daemon配置文件 /etc/docker/daemon.json来使用加速器。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://asmpc6kh.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2.3 docker卸载
删除安装包:yum remove docker-ce
删除镜像、容器、配置文件等内容:rm -rf /var/lib/docker
三、docker命令
3.1服务相关命令
启动docker服务:systemctl start docker
查看docker服务状态:systemctl status docker
停止docker服务:systemctl stop docker
重启docker服务:systemctl restart docker
开启启动docker服务:systemctl enable docker
3.2镜像相关命令
查看镜像:docker images
搜索镜像:docker search 应用名称(redis、mysql...)
下载镜像:docker pull 应用名称:版本号
删除镜像:docker rmi 镜像ID/应用名称:版本号
3.3 容器相关命令
参数:-i 保持容器运行
t 自动进入容器,退出容器后,自动关闭容器
d 后台运行容器,需要docker exec进入容器,退出容器后,不会关
--name 为创建容器起名
/bin/bash 进入容器命令行
创建容器:docker run -id --name 名称 镜像名称:版本号
进入容器:docker exec -it 容器名 /bin/bash
退出容器:exit
查看容器:docker ps -a
停止容器:docker stop 容器名
启动容器:docker start 容器名
删除容器:docker rm 容器名
查看容器信息:docker inspect 容器名
四、容器数据卷
4.1概念
数据卷就是宿主机中的一个目录或者文件,当数据卷与容器目录绑定后,双方的修改会立即同步。一个数据卷可以被多个容器挂载,一个容器可以挂在多个数据卷。如图所示:
4.2作用
容器数据持久化
外部机器与容器间接通信
容器之间的数据交换
4.3配置数据卷
docker run -id -v 宿主机目录(文件):容器目录(文件) --name 名称 镜像名称:版本号
五、docker应用部署示例
5.1 部署mysql
(1)搜索mysql镜像:docker search mysql
(2)拉取镜像:docker pull mysql:5.7
(3)创建容器,设置端口映射、目录映射
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 3307:3306 \
--name zhanglang_mysql \
-v $PWD/conf:/etc.mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql :5.6
六、dockerfile(超核心)下期详细讲解
七、私有仓库
7.1搭建
(a)拉取私有仓库镜像:docker pull registry
(b)启动私有仓库容器:docker run -id --name=zhanglang_registry -p 5000:5000 registry
(c)打开浏览器输入:http://私有仓库服务器IP地址:5000/v2/_catalog
(d)修改deamon.json:vim /etc/docker/daemon.json
{"insecure-registries":["私有仓库服务器IP地址:5000"]}
(e)重启docker服务:systemctl restart docker
docker start registry
7.2上传镜像
(a)标记镜像为私有仓库的镜像:docker tag 应用名称:版本号 私有仓库服务器IP地址:5000/应用名称:版本号
(b)上传标记的镜像:docker push 私有仓库服务器IP地址:5000/应用名称:版本号
7.3 拉取镜像
(a)拉取镜像:docker pull 私有仓库服务器IP地址:5000/应用名称:版本号