Docker学习

概念

1.开源的应用容器引擎,go语言实现
2.Docker可以让开发者打包他们的应用以及依赖到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上
3.容器完全使用沙箱机制,相互隔离
4.容器性能开销极低

	-- Docker是一种容器技术,解决软件跨环境迁移的问题

安装

# 1.yum包更新到最新
	yum update
# 安装需要的软件包,yum-utils 提供 yum-config-manager功能 另外两个是devicemapper驱动依赖的
	yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置yum源
	yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装最新版本
	yum install docker-ce --allowerasing #--allowerasing:允许擦除已安装的软件包以解决依赖关系。
# 安装指定版本
	yum list docker-ce --showduplicates | sort -r  #查看版本
	sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
# 查看docker版本
	docker -v
# 启动与测试
	sudo systemctl start docker  # 启动docker
	docker run hello-world  #测试

docker架构

在这里插入图片描述

配置镜像加速器

在这里插入图片描述

docker 服务相关命令

# 启动docker
	systemctl start docker
# 查看状态
	systemctl status docker
# 关闭docker
	systemctl stop docker
# 重启
	systemctl restart docker
# 开机启动docker
	systemctl enable docker

镜像相关命令

# 查看镜像(本地)
	docker images
# 搜索镜像(远程)
	docker search 镜像名称
# 拉取镜像(远程到本地)
	docker pull redis:3.2	# 冒号后是版本号,不写默认最新
		# 查询版本号,到官方网站
		https://hub.docker.com/
# 删除镜像(本地)
	docker rmi [image id] # image id使用docker images查询
		# 删除全部
		docker rmi `docker images -q` # docker images -q 查看所有的镜像id

容器相关命令

# 查看容器
	docker ps -a	# -a 查询所有容器,包括已经关闭的
# 创建容器
	docker run  -i -t --name=c1 redis:latest /bin/bash	# i没有客户端也持续运行 t 增加一个终端	d 容器后台运行,返回容器id
# 进入容器
	docker exec -it [name] /bin/bash
# 启动容器
	docker start [name]
# 停止容器
	docker stop [name]
# 删除容器
	docker rm [name]	# 也可以删除已经停止的
# 查看容器信息
	docker inspect

在这里插入图片描述

容器的数据卷

问题

1.Docker容器删除后,在容器中产生的数据也会随之销毁
2.Docker容器和外部机器不能直接交换文件
3.容器之间的数据交互

数据卷

1.数据卷是宿主机的一个目录或者文件
2.当容器目录和数据卷目录绑定后,对方的修改会立即同步
3.一个数据卷可以被多个容器同时挂载
4.一个容器也可以被挂载多个数据卷

数据卷作用

1.容器数据持久化
2.外部机器和容器间接通信
3.容器之间数据交换

配置数据卷

# 创建启动容器时,使用-v参数 设置数据卷
	docker run ... -v 宿主机目录(文件):容器内目录(文件)
		1.目录必须是绝对目录
		2.如果目录不存在,会自动创建
		3.可以挂载多个数据卷  多个 -v
		
	## 两个容器挂载同一个数据卷,就可以进行数据交互
	\ 代表命令还没完

数据卷容器

多容器进行数据交互
	1.多个容器挂载同一个数据卷
	2.数据卷容器
# 创建启动c3数据卷容器,使用 -v 参数 设置数据卷
	docker run -it --name=c3 -v /volume centos:7 /bin/bash
# 创建启动c1,c2容器,使用--volumes-from 参数 设置数据卷
	docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
	docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash

docker部署

MySQL

需求:
	在docker容器中部署MySql,并通过外部mysql客户端操作MySQL Server

实现步骤

1.搜索mysql镜像
2.拉取mysql镜像
3.创建容器
4.操作容器中的mysql

在这里插入图片描述

# 搜索mysql
	docker search mysql:5.6
# 拉取mysql
	docker pull mysql:5.6
# 在/root目录下创建mysql目录用于存储mysql数据信息
	mkdir ~/mysql
	cd ~/mysql
# docker run -id \
	-p 3307:3306 \	# 将容器的3306端口映射到宿主机的3307端口
	--name=c_mysql \	
	-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用户的密码
	mysql:5.6

#
 docker exec -it c_mysql /bin/bash

tomcat

# 搜索镜像
	docker search tomcat
# 拉取镜像
	docker pull tomcat
# 在root目录下创建tomcat目录用于存储tomcat数据信息
	mkdir ~/tomcat
	cd ~/tomcat
	
	docker run -id --name=c_tomcat \
	-p 8888:8080 \
	-v $PWD:/usr/local/tomcat/webapps \
	tomcat

nginx


mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
vim nginx.conf # 粘贴nginx配置文件内容

docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx

redis

docker run -id --name=c_redis -p 6379:6379 redis:5.0

# 使用外部机连接
./redis-cli.exe -h 192.168.***.*** -p 6379
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值