1、准备工具
2、简介
===>>>首先需要介绍的是dockerHub,可以粗略的理解为镜像仓库,可以通过搜索,查询相关镜像信息。
Dockers是一个开源的应用容器引擎,基于go语言开发。Dockers可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app),更重要的是容器的性能开销极低。
- web应用的自动化打包和发布
- 自动化测试和持续集成、发布
- 在服务型环境中部署和调整数据库或其他后台应用
名称 | 说明 |
---|---|
Docker镜像(images) | Docker镜像用于创建Docker容器的模板。镜像是基于关联文件系统的一种层式结构,由一系列指令一步一步构建出来 |
Docker容器(Container) | 容器是独立运行的一个或一组应用,镜像相当于类,容器相当于实例 |
Docker客户端(Client) | Docker客户端通过命令行或者其他工具使用Docker API与Docker的守护进程通信 |
Docker主机(Host) | 一个物理或者虚拟的机器用于执行Docker守护进程和容器 |
Docker守护进程 | 是Docker服务器端进程,负责支撑Docker容器的运行及镜像的管理 |
Docker仓库DockerHub(Registry) | Docker仓库用来保护镜像,可以理解为代码控制中的代码仓库。Docker Hub提供了庞大的镜像集合供使用。用户也可以将自己本地的镜像推送到Docker仓库供其他人下载 |
3、Docker安装
Docker可以运行在Mac、Windows、Centos、DEBIAN、UBUNTU等操作系统,提供社区和企业版。centos6支持不算太好,本次使用centos7
3.1 yum更新
【更新】yum包更新到最新(相对来说速度比较慢)
yum update
作用:安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
3.2 设置yum源
- 选择方案
```shell
方案一:使用ustc的(推荐)
yum-config-manager —add-repo http://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
方案二:使用阿里云(可能失败)
yum-config-manager —add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12883990/1632034673591-f6f2408b-0875-43a1-8050-3b7422fe68b0.png#clientId=uff4f553a-4b1d-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=70&id=ub5b0ef20&margin=%5Bobject%20Object%5D&name=image.png&originHeight=140&originWidth=1746&originalType=binary&ratio=1&rotation=0&showTitle=false&size=37253&status=done&style=none&taskId=u318b6d3a-dad2-4530-988d-eaacfb76a40&title=&width=873)
> **【注意】:使用yum源出现错误的时候:**
> ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12883990/1617547424047-07908609-ac5c-4326-bc36-4ae5efce6d5c.png#crop=0&crop=0&crop=1&crop=1&height=419&id=QGjR1&margin=%5Bobject%20Object%5D&name=image.png&originHeight=837&originWidth=1703&originalType=binary&ratio=1&rotation=0&showTitle=false&size=141591&status=done&style=none&title=&width=851.5)
> **删除docker相关的repo**
> ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12883990/1617547495601-028bc5c5-0e29-447d-b8f1-e59ae762510b.png#crop=0&crop=0&crop=1&crop=1&height=216&id=ZKu2k&margin=%5Bobject%20Object%5D&name=image.png&originHeight=431&originWidth=1481&originalType=binary&ratio=1&rotation=0&showTitle=false&size=83983&status=done&style=none&title=&width=740.5)
```shell
cd /etc/yum.repos.d
rm -rf docker-ce.repo
rm -rf mirrors.ustc.edu.cn_docker-ce_linux_centos_docker-ce_repo.repo
- 【安装】docker,出现输入的界面都按
y
yum install -y docker-ce
3.3 docker版本查看
docker -v
3.4 设置ustc镜像
【编辑】/etc/docker/daemon.json
mkdir /etc/docker
vi /etc/docker/daemon.json
在daemon.json添加内容
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
3.5 docker启动与停止
# 启动docker服务
systemctl start docker
# 停止docker服务
systemctl stop docker
# 重启docker服务
systemctl restart docker
# 查看docker服务状态
systemctl status docker
# 设置开机启动docker服务
systemctl enable docker
4、docker常用命令
4.1 docker镜像查看
docker images
4.2 docker搜索镜像
docker search centos7
4.3 docker拉去镜像
docker pull centos:7
4.4 docker删除命令
docker rmi 8652b9f0cb4c
# 批量删除(慎用)
docker rmi `docker images -q`
4.5 服务运行占用
netstat -tulpn
5、交互式容器
5.1 查看容器运行的镜像
docker ps
查看容器运行和非运行的镜像
docker ps -a
5.2 创建交互式容器
可以基于已有的镜像来创建和启动容器,创建与启动容器使用命令
docker run
- 参数说明:
- -i:表示运行容器
- -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去,即分配一个伪终端
- —name:为创建的容器命名
- -v:表示目录映射关系(前者是宿主主机目录,后者是映射到宿主主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做好修改,然后共享到容器上。
- -d:创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t这两个参数,创建后就会自动进入容器)
- -p:表示端口映射,前者是宿主主机端口号,后者是容器内的映射端口。可以使用多个-p做多个端口映射
5.3 启动交互是容器
【pull】先拉取一个镜像
docker pull centos:7
【run】使用-it,容器运行镜像
docker run -it --name=mycentos7 centos:7 /bin/bash
6、创建守护式容器
【run】使用-di,不需要加/bin/bash(不需要进入伪终端,后台启动)运行容器
docker run -di --name=mycentos2 centos:7
守护式容器启动后,再次进入伪终端
docker exec -it mycentos2 /bin/bash
7、操作容器
7.1 停止服务
stop后面可以式容器名称,也可以式容器ID
docker stop mycentos2
【启动】停止服务后再次启动服务
docker start mycentos2
7.2 拷贝容器
- 宿主机文件拷贝到容器 ```shell cd / touch aaa.txt
将根目录下的文件复制到docker容器中
docker cp aaa.txt mycentos2:/
再次重新进入容器查看文件是否拷贝成功
```shell
docker exec -it mycentos2 /bin/bash
ll
容器文件拷贝到宿主机
保证当前处在centos2容器伪终端的状态下(如果不在输入命令:docker exec -it mycentos2 /bin/bash) ```shell
容器终端创建文件
touch bbb.txt
退出容器(容器中并没有安装docker)回到宿主机终端
exit
宿主机执行复制命令
docker cp mycentos2:/bbb.txt /
![image.png](https://cdn.nlark.com/yuque/0/2021/png/12883990/1617601551472-3efdfb69-2192-4188-b050-3e0b6bbcc62b.png#crop=0&crop=0&crop=1&crop=1&height=134&id=HM3qA&margin=%5Bobject%20Object%5D&name=image.png&originHeight=267&originWidth=1918&originalType=binary&ratio=1&rotation=0&showTitle=false&size=57655&status=done&style=none&title=&width=959)
<a name="JBNWW"></a>
### 7.3 挂载
1. 目录挂载
```shell
# 创建Linux宿主机器要挂载的目录
mkdir /usr/local/test
# 创建并启动容器mycentos3,并挂载Linux中的/usr/local/test目录到容器的/usr/local/test;也就是在Linux中的/usr/local/test中操作相当于对容器响应目录操作
docker run -di -v /usr/local/test:/usr/local/test --name=mycentos3 centos:7
# 在Linux下创建文件
touch /usr/local/test/def.txt
# 进入容器
docker exec -it mycentos3 /bin/bash
【注意】:如果共享的是多级的目录,可能会出现权限不足的提示,这是因为centos7中的安全模块selinux把权限禁掉了,需要添加参数—privileged=true来解决挂载的目录没有权限的问题
7.4 查看IP
docker inspect mycentos3
7.5 删除容器
- 删除mycentos7容器
docker rm mycentos7
【注意】:容器处于运行状态是无法删除的,需要先关闭容器 其实是可以删除的 但需要慎用
docker rm docker ps -a -q
删除所有容器
8、开机自启
8.1 可启动化
开启可启动设置
systemctl enable docker
出现如上的显示需要将文件存储到指定目录下
cp /usr/lib/systemd/system/docker.service /etc/systemd/system/
8.2 修改重启服务
运行如下两句命令
systemctl daemon-reload
systemctl restart docker
查看配置情况
ll /etc/systemd/system/multi-user.target.wants/docker.service
9、Docker-compose模板
9.1 安装/卸载使用说明
【安装使用说明】:请进入这个的文档中查看 点击进入Docker-compose 安装
10 容器之间link
单向link
不同docker服务都会有各自ip,容器更换导致关联容器需要重新配置连接信息
docker 服务之间link
docker inspect mysql8.0.21
关联mysql服务 通过link命令
docker run -d -p 8000:8080 --name mytomcat --link mysql8.0.21 tomcat:8.5.73-jdk8-corretto
双向link
网桥列表
docker network ls
自己构建桥接docker network create -d bridge my_bridge
两个服务连接到创建的网桥上—-实现服务之间的互通docker network connect my_bridge mytomcat
docker network connect my_bridge mysql8.0.21
文件挂载
文件挂载配置提前准备—-生成对应的容器
docker create -v /usr/local/lixin/webapps/:/usr/local/tomcat/webapps --name webconfig tomcat:8.5.73-jdk8-corretto /bin/true
生成的配置容器 —volumes-from 配置即可
docker run -d -p 80:8080 --volumes-from webconfig --name tomcat1 tomcat:8.5.73-jdk8-corretto