1.docker是什么?
它是一种容器技术,里面装载了软件和所需要的环境,解决了软件跨环境报错的问题。
2.安装docker
- 更新yum包:
yum update - 安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖:
yum install -y yum-utils device-mapper-persistent-data lvm2 - 设置国内的yum源,加快下载速度:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo - 安装docker,出现输入的界面都按y:
yum install -y docker-ce - 查看docker版本,验证是否安装成功:
docker -v
3.docker架构
- 镜像:相当于是root的文件系统
- 容器:镜像和容器的关系就类似于类和对象,镜像是静态的,而容器是由镜像创建出来的,是动态的,可以启动,停止,删除等
- 仓库:可以用来存放镜像
4.配置镜像加速器
- 登录阿里云,找到容器镜像服务,并把配置镜像加速器的代码粘贴执行
- 查看是否配置成功:
/etc/docker/daemon.json,出现配置代码即成功
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["[https://4ir4oh3j.mirror.aliyuncs.com](https://4ir4oh3j.mirror.aliyuncs.com/)"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
5.docker的命令
- docker服务相关的命令:
systemctl start|stop|disable|restart|enable|status docker
- docker镜像相关的命令:
- 查看docker镜像的版本:
docker image inspect 镜像名:latest|grep -i version - 查看本地所有镜像:
docker images - 查看本地镜像的id:
docker images -q - 搜索镜像:
docker search 镜像名称 - 拉取镜像:
docker pull 镜像名称:版本号(镜像版本号可以到:Docker Hub Container Image Library | App Containerization查询) - 删除镜像:
docker rmi 镜像id
- docker容器相关的命令
| 命令 | 作用 | 参数说明 |
|---|---|---|
| docker ps [-aq] | 查看容器 | -a:查看所有容器;-q:只查看容器id |
| docker run [-it] [-id] [--name=容器名] 镜像:版本号 | 创建并启动容器 | -i:保持容器运行;-t:为容器重新分配一个伪输入终端;-d:以后台模式运行容器。需要使用docker exec进入容器;—name:为容器命名(-it创建的容器称为交互式容器,退出后容器会关闭。-id创建的容器称为守护式容器,退出后,容器不会关闭 ) |
| docker exec -it 容器名 /bin/bash | 进入容器 | 退出后,容器不会关闭 |
| docker start 容器名称 | 启动容器 | |
| docker stop 容器名称 | 停止容器 | |
| docker rm 容器名称 | 删除容器 | |
| docker inspect 容器名称 | 查看容器具体信息 | |
docker rm docker ps -aq | 删除所有容器 | -a:显示所有容器;-q:显示容器id |
6.docker容器的数据卷
- 数据卷是什么?
数据卷是宿主机中的一个文件或目录
- 数据卷的作用?
数据卷的目录和容器的目录绑定后,会实现数据同步,相当于备份了数据,一旦容器被破坏,里面的数据丢失,还可以通过挂载相应的数据卷找回
- 注意事项:
一个数据卷可以被多个容器挂载
一个容器也可以绑定多个数据卷
- 配置数据卷
创建容器并启动时配置数据卷:
docker run … -v 宿主机目录(或文件):容器目录(或文件)
注意:
- 目录必须是绝对路径
- 如果目录不存在,则会自动创建
- 配置数据卷容器(只需要设置容器目录,数据卷目录会自动分配,简化了操作):
创建数据卷容器c1并启动:
docker run -it -v /volume --name=c1 centos:7
创建容器c2并启动时配置数据卷c1:
docker run -it --volumes-from c1 --name=c2 centos:7
7.Dockerfile
容器转为镜像:
docker commit 容器id 镜像名称:版本号
压缩镜像文件:
docker save -o 压缩文件名称.tar 镜像名称:版本号
解压镜像文件:
docker load -i 压缩文件名称
dockerfile是什么?
就是一个文本文件,里面包含了多条指令
制作centos镜像
- 新建文本文件
- 复制粘贴下面的代码
FROM centos:7
MAINTAINERguanghui <2285190802@qq.com>
RUN yum install -y vim
WORKDIR /usr
CMD /bin/bash
参数说明:
- FROM:定义父镜像
- MAINTAINER:定义作者信息
- RUN:执行安装命令
- WOEKDIR:定义默认的工作目录
- CMD:定义容器启动执行的命令
- 构建镜像:
docker build -f 文件路径 -t 镜像名:版本号 .
8.Docker Compose
服务编排:按照一定规则批量管理容器
- Dokcer Compose是什么?
一个服务编排的工具
- 安装
# 下载docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
# 查看版本信息
docker-compose -version
- 创建yml文件
database:
image: mysql:5.6
ports:
- "3306:3306"
web:
image: php-mysql-app
ports:
- "80:80"
注意:每个key的”:“和-后面要有空格
- 同时创建并运行:
docker-compose up –d
9.Docker私有仓库
- 私有仓库搭建
# 1、拉取私有仓库镜像
docker pull registry
# 2、启动私有仓库容器
docker run -id --name=registry -p 5000:5000 registry
# 3、打开浏览器,输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]}表示私有仓库搭建成功
# 4、修改daemon.json
vim /etc/docker/daemon.json
# 在上述文件中添加一个对象,保存退出。此步用于让docker信任私有仓库地址;注意将私有仓库服务器ip修改为自己私有仓库服务器的真实ip
"insecure-registries":["私有仓库服务器ip:5000"]
# 5、重启docker服务
systemctl restart docker
docker start registry
- 上传镜像
# 1、标记镜像为私有仓库的镜像(这里使用centos版本为7的镜像做演示)
docker tag centos:7 私有仓库服务器IP:5000/centos:7
# 2、上传标记的镜像
docker push 私有仓库服务器IP:5000/centos:7
上传成功后,发现repositories里面已经有内容了
- 拉取镜像
docker pull 私有仓库服务器ip:5000/镜像名称:版本号