#docker的安装
#先卸载旧的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#安装所需工具包
yum install -y yum-utils device-mapper-persistent-data lvm2
#添加软件源信息(阿里源)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
#加载缓存
yum makecache fast
#安装docker
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
#配置镜像加速器(可以在阿里云-容器镜像服务-镜像加速器获得)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://j57bvtd1.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

#查看安装版本
docker version
#查看其它版本
yum list docker-ce --showduplicates | sort -r
#安装其他版本
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-compose-plugin


#运行docker
docker run hello-world
systemctl start docker      #启动docker
systemctl stop docker #停止docker
systemctl status docker #查看状态
systemctl restart docker #重启docker
systemctl enable docker #设置开机启动
docker info #查看docker概要信息
docker --help #帮助信息
docker 具体命令--help #具体命令帮助信息



docker images #查看主机上的镜像
-a 查看所有
-q 查看镜像id
docker search xxx #查找仓库中的镜像
--limit 5 #只列出5个镜像
docker pull xxxx #拉取镜像
docker system df #查看镜像容器数据卷所占的空间
docker rmi xxx #删除某个镜像 i:image


什么是docker的虚悬镜像?
仓库名和标签名都为<none>的镜像。
docker run -it --name xxx /bin/bash
-i:交互操作
-t:终端
--name:容器名称
xxx:镜像名称
/bin/bash:交互式shell
exit退出,容器停止
CTRL+p+q退出,容器不停止

docker将现有实例提交为新的镜像
docker commit -m="提交者的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

docker start xxx(名称或id)    #启动容器
docker restart xxx
dockers stop xxx
docker kill xxx #强制停止
docker rm xxx #删除已经停止的容器
docker rm -f xxx #强制删除

docker run -d xxx #后台运行容器
docker logs 容器id #查看容器日志
docker inspect 容器id #查看容器内部细节
docker exec -it 容器id /bin/bash #进入已创建的容器,打开新的终端,启动新的进程,exit退出不会停止容器。
docker attach 容器id #进入已创建的容器,直接进入启动命令的终端,exit退出会导致容器退出。
#拷贝容器内的文件到宿主机
docker cp ab45cd647449:/tmp/a.txt ./
#将容器导出为一个tar包
docker export ab45cd647449 > aaa.tar
#将到处的tar包导入为镜像
cat aaa.tar | docker import - xxx/xxx
docker数据卷
docker run -d -p 5000:5000 -v /hyh/registry:/tmp/registry:rw --privileged=true registry
-p:外部端口:内部端口
-v:宿主机绝对路径目录:容器内目录
--privileged=true:确定容器内的root有真正的root权限
rw:默认是rw,可读可写,可以修改为ro----只读(容器内只读)

数据卷可以在容器之间共享或重用数据
卷中的更改可以直接实时生效
数据卷中的更改不会包含在镜像的更新中
数据卷的更新一直持续到没有容器使用它为止

docker停止后在宿主机卷目录下创建删除等操作会在docker恢复后进行同步,双向互通

卷的继承
docker run -it --privileged=true --volumes-from juan(继承哪个容器的卷) --name juan2 centos /bin/bash
镜像:是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。
docker run过程

docker run开始后现在本地查找镜像,如果有就以镜像为模板生产容器实例运行,如果没有就去Docker Hub上查找该镜像,找得到就下载到本地,以镜像为模板生产容器实例运行,找不到就返回失败错误,查找不到镜像。


docker运行tomcat
最新版
docker run -d -p 8080:8080 --name tomcat tomcat
##本地没有镜像默认拉取最新版的,默认访问404,
docker exec -it tomcat /bin/bash ##进入到容器中删除默认的webapps,把webapps.dist重命名为webapps就能访问
指定版本
docker run -d -p 8080:8080 --name tomcat8 billtgoo/tomcat8-jdk8 #直接访问8080即可
docker运行mysql
docker run -d -p 3306:3306 --privileged=true -v /zzyyuse/mysql/log:/var/log/mysql -v /zzyyuse/mysql/data:/var/lib/mysql -v /zzyyuse/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
docker安装完MYSQL并run出容器后先修改字符集编码在建库建表。