深入理解 AuthenticationManagerBuilder 【源码篇】
817
2022-05-30
docker[Centos 7]:
个人理解的docker,核心为镜像和容器。docker可以运行在各大系统上,这里记录运用在linux上的情况。其中,镜像可以理解为就是一个打包完毕的对应应用的安装介质,容器可以理解为一个一个独立的用来放镜像对应应用的独立沙箱。
常用命令:
安装命令:
卸载旧版本yum -y remove docker docker-common docker-selinux docker-engine
安装需要的软件包 yum install -y yum-utils device-mapper-persistent-data lvm2
设置stable镜像仓库yum-config-manager --add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引yum makecache fast
安装DOCKER CEyum -y install docker-ce
测试docker version
卸载systemctl stop docker yum -y remove docker-ce rm -rf /var/lib/docker
查看是否安装完毕 docker -v
启动 systemctl start docker
关闭 systemctl stop docker
状态 systemctl status docker
开机自启 systemctl enable docker
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://sd7sgxrc.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker 直接运行即可
查看目前有的镜像:docker images
搜索镜像 : docker search images(可以上hub.docker.com进行查找)
下载镜像:docker pull 镜像名字:版本号 例: docker pull redis:5.0
删除镜像:
3.1 删除单个: docker rmi -f 镜像ID
3.2 删除多个: docker rmi -f 镜像名1:版本号 镜像名2:版本号
3.3 删除全部 : docker rmi -f `docker images -p` (这里`为esc下方按键 其实就是列出所有镜像 名 然后删除)
新建并启动交互型容器(exit后就退出容器) : docker run -it --name=xx 镜像名:版本号 /bin/bash
新建并启动守护型容器 : docker run id --name=xx 镜像名:版本号
i :与容器交互 t: 终端 d:守护进程 it:打开容器的时候,直接打开终端,一旦exit,离开终端同时该容器会被关闭. id:打开容器的时候,为守护进程,不直接打开终端,exit不会关闭容器。若需要进入终端, 使用exec命令
查看正在运行的容器: docker ps
查看所有容器(不管是否在运行) docker ps -a
若是守护进程类型的容器,打开终端与其交互命令: docker exec -it 容器名 /bin/bash
启动容器 docker start 容器ID/容器名称
关闭容器 docker stop 容器ID/容器名称
删除容器 docker rm 容器ID/容器名称
查看容器信息 docker inspect 容器ID/容器名称
个人理解:docker大体的结构是 主机 - 容器 ,数据卷就是一个 目录或者文件 ,用于和容器进行绑定的一个东西。可用于持久数据。
用法 : 创建启动容器时 使用-v命令 如: docker run id/it --name=xx -v /root/data:/root/container [格式 : docker run ... -v 宿主机目录(文件):容器内目录(文件)]
个人理解:主要作用,就是创建一个容器,专门和宿主机进行绑定。而后有要和这个数据卷绑定的,直接和该容器绑定即可。相当于第5点数据卷中,多个容器想绑定同个目录时,分别创建-v 去绑定相同宿主机目录一样.
用法 :
创建数据卷容器 docker run -it --name = c3 /volume centos:7 /bin/bash(如果直接这样写 他会在宿主机分配一个地址,可以通过docker inspect 容器ID/容器名称进行查看)
创建要和该数据卷容器绑定的容器:
docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash
这样 c1 c2 c3则已经完全绑定一起,共享同一个数据卷
1. 搜索mysql镜像
docker search mysql
2. 拉取mysql镜像
docker pull mysql:5.6
3. 创建容器,设置端口映射、目录映射
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 3306:3306 \
--name=docker_mysql5.7 \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=Cx776815 \
mysql:5.7
- 参数说明:
- **-p 3307:3306**:将容器的 3306 端口映射到宿主机的 3307 端口。
- **-v $PWD/conf:/etc/mysql/conf.d**:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
- **-v $PWD/logs:/logs**:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
- **-v $PWD/data:/var/lib/mysql** :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
- **-e MYSQL_ROOT_PASSWORD=123456:**初始化 root 用户的密码。
4. 进入容器,操作mysql
docker exec –it c_mysql /bin/bash
过程如同部署mysql , 分为四步,找到自己要的镜像,拉取下来到docker,创建对应的tomcat容器,创建时将数据卷设置好。真正运用的时候,个人认为最好将数据卷定位到tomcat文件夹 而非webapps 可以方便启动 或者 关闭等 还未进行实战
实战记录
1. 部署tomcat
docker run -id --name=c_tomcat -p 8080:8080 -v /root/tomcat/bin:/usr/local/tomcat/bin -v /root/tomcat/webapps:/usr/local/tomcat/webapps -v $PWD/logs:/usr/local/tomcat/logs -v $PWD/conf:/usr/local/tomcat/conf tomcat /bin/bash
创建成功,但是容器那边的bin conf logs webapps 均变成了空 故是有问题的
最终还是只对webapps文件夹进行了数据卷操作。
docker run -id --name=c_tomcat -p 80:8080 -v /root/tomcat/webapps:/usr/local/tomcat/webapps tomcat /bin/bash
最终查询资料得:
数据的覆盖问题
如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。
如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录中会显示数据卷中的数据。如果原来容器中的目录中有数据,那么这些原始数据会被隐藏掉。
这两个规则都非常重要,灵活利用第一个规则可以帮助我们初始化数据卷中的内容。掌握第二个规则可以保证挂载数据卷后的数据总是你期望的结果。
Docker 容器
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。