目录
1.Docker 简介
docker 是在开发运维日渐复杂情况下所出现的新工具,他能将应用运行的一些环境以及环境配置放在一个虚拟的容器之中,用户只需要获取docker镜像,就可以载本地直接运行,无需搭建环境,无需配置相应的参数,十分方便和便捷。而在开发测试中,测试和运维可以拉取开发者完成的镜像,就可以便捷的进行迅速的部署和测试,极大的提升了测试的效率..
Docker 的重要内容包括有镜像,数据卷以及网络三大部分,各个不同的部分都可以衍生出许多不同的操作,我们以下将从其基本的原理和一个例子来进行详细的说明。其具体的一些知识图录如下:
2.docker安装与加速
2.1 docker 安装
docker的安装和使用需要用到虚拟机,可在以下网址下载:
docker 离线包可以访问以下网址下载:https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz
docker的安装工具需要在githhub上下载:
GitHub - Jrohy/docker-install: auto install latest docker by online/offline (binary install)
2.2 离线安装
通过下载资源包,导入/root/根目录即可
2. 3 镜像加速
由于国内网络问题,需要配置加速器来加速。
修改配置文件 /etc/docker/daemon.json
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
}
EOF
之后重新启动服务:
# 重新加载docker配置
sudo systemctl daemon-reload
#重启docker服务
sudo systemctl restart docker
3.docker 镜像
3.1 docke 镜像介绍
Docker 镜像是一组静态磁盘文件,可以任意下载、复制、分发。从镜像可以运行启动容器(Docker的虚拟计算机)。
3.2 镜像常用命令
下载镜像:
docker pull redis:5.0.12 远程拉取镜像
docker images 查看镜像列表
docker inspect 镜像名 查看镜像详情
docker history 镜像名 查看镜像历史
docker image rm 镜像名或镜像id 删除镜像文件
docker run 镜像名 运行镜像文件
docker save 镜像名 | gzip > 压缩包名(hello-world.tar.gz) 导出镜像文件
docker load < 镜像压缩包 导入镜像操作
4.docker 数据卷及挂载
-d 容器后台运行
--name 指定一个名称
--restart=always 容器可以随系统自动启动
--rm 容器停止时自动删除容器
docker cp: 在容器和宿主机之间复制文件
-p 80: 8080 容器端口映射
5 docker 网络端口设置
5.1 端口映射
客户端要访问宿主机内部运行的容器时,可以在宿主机打开一个端口,当客户单访问这个端口时,可以将访问转发到内部的容器。
# 清理容器
docker rm -f $(docker ps -aq)
# 端口映射
# -p 宿主机端口:容器端口
docker run -d \
--name cat1 \
-p 80:8080 \
tomcat
浏览器访问宿主机映射的端口 80
http://192.168.64.155:80
5.2 虚拟网络
容器键互联可以使用 Docker 的虚拟网络来连接。
# 新建虚拟网络 my-net
docker network create my-net
# 查看虚拟网络
docker network ls
# 查看网络描述信息
docker inspect my-net
# 查看宿主机新建的虚拟网卡
ifconfig
在 Docker 中可以创建任意多个虚拟网络,容器之间可以通过虚拟网络互联互通。创建虚拟网络时宿主机也会连接到虚拟网络。
# 清理容器
docker rm -f $(docker ps -aq)
# 新建两个容器 cat1 和 cat2
# 连接到虚拟网络 my-net
docker run -d --name cat1 \
--net my-net \
tomcat
docker run -d --name cat2 \
--net my-net \
tomcat
# 查看两个容器的虚拟网络ip
docker inspect cat1
docker inspect cat2
# 测试网络能否互联互通
# 从宿主机ping两个容器
ping 172.18.0.2
ping 172.18.0.3
# 进入cat1,ping宿主机和cat2
docker exec -it cat1 ping 172.18.0.1
docker exec -it cat1 ping 172.18.0.3
# 从容器访问另一个容器,可以使用容器名称访问,容器内部实现了解析环境
docker exec -it cat1 ping cat2