docker入门
1.简介
1.docker的容器化技术类似于集装箱。预装项目需要的环境。
2.不需要硬件的虚拟,直接调用原操作系统内核。
3.更快的启动时间。
4.一致的运行环境。
传统的虚拟机和docker的区别:
虚拟机需要操作系统,docker不需要。docker只需要docker引擎。
docker是一个c/s的架构。
镜像是容器的基石(类似于类和对象的关系)。镜像类似于源代码(类似于maven打包和构建的阶段),容器(类似于maven启动和执行的阶段)就是存放程序和服务。docker部署还需要还有一个注册中心。
2.docker安装
2.1 安装
1.更新yum
yum update
2.安装需要的软件包,yum util 提供的yum-config-manager
yum install -y yum-utils device-mapper-persistent-data lvm2
3.设置yum源为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.安装docker
yum -y install docker-ce
ce代表docker社区免费版,ee是企业收费版
2.2设置sutc的镜像
sutc优势是不需要注册,真正的公共服务,而且速度快。
mkdir -p /etc/docker
vim /etc/docker/daemon.json
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
2.3docker启动
systemctl start docker
systemctl status docker
docker info # 信息
systemctl stop docker
systemctl enable docker # 开机启动
3.常用命令
3.1镜像命令
1.查看镜像
docker images
2.搜索镜像
docker search centos
3.拉取镜像
docker pull centos:7
4.删除镜像
docker rmi 镜像id
3.2容器命令
1.查看容器
docker ps
2.启动容器
docker run
-i :运行容器
-t : 表示进去命令行模式
– name : 为容器创建名称
-v : 目录映射关系(前者是宿主机目录,后者是映射到宿主机的目录)
-d : 会创建一个守护式容器在后台运行,-i和-t创建完都会自动进去容器
-p : 表示端口映射,前者是宿主机端口,后者是容器内的端口。
1.交互方式创建容器(创建完之后就进入docker了,无法操作宿主机,退出的话,容器就关闭了)
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
## docker run -it --name=mycentos centos:7 /bin/bash
2.退出容器
exit
3.创建守护式容器(退出容器还在运行,要关闭容器需要docker stop 容器id)
docker run -di --name=mycentos2 centos:7 /bin/bash
4.进入容器
docker exec -it mycentos2 /bin/bash
5.启动容器
docker start 容器id
6.拷贝文件到容器中
docker cp 文件目录 容器id:目标地址
7.拷贝docker到宿主机中
docker cp 容器id:目标地址 宿主机文件目录
8.容器挂在(类似于linux软链接)
-v 指定目录
9.删除容器
docker rm 容器名称
10.查看容器信息
docker inspect 容器id
3.3 创建主流容器
3.3.1创建mysql的容器
docker pull mysql:5.7
docker run -di --name=mysql -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
docker exec -it mysql /bin/bash
## 进入mysql
mysql -uroot -proot --default-character-set=utf8
-e 是参数配置
nginx、redis都一样
正常config都是挂载到宿主机,这样方便修改。
4.迁移与备份
1.把容器打包成镜像
docker commit 容器名称 镜像名称
docker save -o 镜像名称.tar 镜像名称 # 把容器打成tar包
docker load -i 镜像名称.tar # 解压myredis镜像
5.dockerfile
由一系列命令和参数构成的脚本。
例子创建一个jdk8的镜像。
mkdir -p /temp/dockerjdk8
#放入jdk8的压缩包
vim Dockerfile #命名一定要一致
FROM centos:7
MAINTAINER xxxx
WORKDIR /usr
RUN mkdir /usr/loacl/java
ADD jdk8的压缩包 /usr/loacl/java
ENV JAVA_HOME 解压后的目录
ENV PATH $JAVA_HOME/bin:$PATH
## 构建镜像
docker build -t='镜像名称' Dockerfile的目录地址
6.私有仓库配置
docker pull registry #拉取私有仓库镜像
docker run -di --name=registry -p 5000:5000 registry #启动私有仓库
vim etc/docker/daemon.josn
{"insecure-registries":["镜像仓库ip:5000"]} #添加daemon.josn内容
重启docker
访问镜像仓库http://ip:5000/v2/_catelog 就可以看出私有仓库下面的镜像。
docker tag 镜像名称 私有仓库地址/目录 #上次镜像到私有仓库
7.docker-maven插件
maven打包自动上传至私有仓库
docker-maven-plugin插件