Docker
Docker
**镜像(Image)**:Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。
容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。
DockerHub:DockerHub是一个Docker镜像的托管平台。这样的平台称为Docker Registry。
安装
- 卸载
yum remove docker \ |
- 安装yum工具
yum install -y yum-utils \ |
- 更新本地镜像源
yum-config-manager \ |
- 安装docker
yum install -y docker-ce |
- 关闭防火墙
非服务器
# 关闭 |
- 启动docker
systemctl start docker # 启动docker服务 |
- 配置镜像加速
阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
sudo mkdir -p /etc/docker |
镜像操作
docker [操作] –help :查看文档
镜像名称一般分两部分组成:**[repository]:[tag]** :mysql:5.7
在设有指定tag时,默认是latest,代表最新版本的镜像
操作命令
#查看镜像 |
容器
创建运行容器
#以nginx为例子,不同的容器启动需要看对于的文档 |
修改容器的文件
#进入容器 |
因为容器只包含自己所需要的文件,所以对于编辑器 vim/vi 都是没有的
例,修改nginx的index.html
sed -i 's#Welcome to nginx#这是修改的标题#g' index.html |
数据卷
数据卷(volume):是一个虚拟目录,指向宿主机文件系统中的某个目录。
- 容器和数据卷进行关联,数据卷和本地文件系统进行关联 == 挂载,本地变化即影响容器对应的文件,双向绑定
语法
docker volume [COMMAND] |
docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:
在创建容器时,可以通过**-V**参数来挂载一个数据卷到某个容器目录
# create 创建 一个volume |
- docker管理数据卷目录
例子:通过数据卷操作nginx的index.html文件:(nginx容器index.html文件路径:/usr/share/nginx/html内),把这个目录挂载到html这个数据卷(相当于目录)上,进行操作对应目录内的文件
#1、创建 增加 -v 数据卷名称:映射的地址目录
docker run --name cnginx -p 80:80 -v html:/usr/share/nginx/html -d nginx
#2、 查看数据卷的详细信息,查看Mountpoint数据卷位置
docker inspect html
#3、进入数据卷目录,发现和映射目录的文件内容一模一样【双向绑定】
cd /var/lib/docker/volumes/html/_data
ls
#对文件进行修改和保存,自动刷新
vi index.html
自己管理目录挂载
# -v [宿主文件]:[容器文件]
# -v [宿主目录]:[容器目录]
docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-d mysql:5.7.25
- 总结
Dockerfile
- 单个项目部署镜像
构建镜像
1、创建目录
mkdir docker-demo |
Dockerfile
# 指定基础镜像 #被人制作好的镜像(不用配置环境变量。。)
FROM java:8-alpine
COPY ./docker-demo.jar /tmp/app.jar #代构建的jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
2、构建
docker build -t javaweb:1.0 . |
3、可查看镜像有没有运行,访问总结访问项目的端口即可
docker images |
DockerCompose
- 快速进行集群部署
1、每个服务文件夹:jar(mave打包) +Dockerfile(定义构建镜像和添设置ar包位置)
#各服务对应的Dockerfile |
2、打包前 localhost 更改为 服务名称
#例如 |
3、DockerCompose 文件
- 类似 DockerFile的汇总
version: "3.2" |
4、构建镜像
#定位到目录 |
镜像仓库
配置Docker信任地址
私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:
# 打开要修改的文件 |
图形化界面
使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:
- 创建自定义目录
mkdir registry-ui |
- 创建 docker-compose 文件
touch docker-compose.yml |
- 写入:
version: '3.0' |
- 执行
docker-compose up -d |
- 访问
http://localhost:8080/ |
推送/拉取
推送镜像到私有镜像访问必须要先 tag(重命名)
1、重新tag本地镜像,名称前缀为私有仓库的地址:http://localhost:8080/
docker tag nginx:latest localhost:8080/nginx:1.0 |
2、推送镜像
docker push localhost:8080/nginx:1.0 |
3、拉取镜像
docker pull localhost:8080/nginx:1.0 |