debian怎么配置静态ip地址
212
2022-10-22
虚拟化容器技术之Docker学习(一)虚拟化容器技术之Docker学习一
目录
一、Docker介绍
二、Docker原理
三、Docker场景
四、Docker安装
五、Docker配置
六、Docker命令
七、Docker实战
八、Docker可视化
九、Docker容器配置
十、Docker卸载
一、Docker介绍
1、Docker介绍
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。
k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
2、友情链接
前言 - Docker —— 从入门到实践
Docker中文文档 Docker概述-DockerInfo
Docker 教程 | 菜鸟教程
???? Docker 简介和安装 - Docker 快速入门
Windows 中配置 Docker | Microsoft Docs
Docker CE 镜像源站-阿里云开发者社区
Install Docker Desktop on Windows | Docker Documentation
README - 《docker官方文档(v1.6)中文翻译》 - 书栈网 · BookStack
docker swarm ca - [ Docker 17 中文开发手册 ] - 在线原生手册 - php中文网
Docker Hub
Get Started with Docker | Docker
Docker Documentation | Docker Documentation
二、Docker原理
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器
。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
一个完整的Docker有以下几个部分组成:
DockerClient客户端Docker Daemon守护进程Docker Image镜像DockerContainer容器
Docker技术的三大核心概念
镜像(Image)容器(Container)仓库(Repository)
Docker容器的五大隔离
pid:进程隔离net:网络隔离 (独有的ip地址,网关,子网掩码)ipc:进程间交互隔离mnt:文件系统隔离uts:主机和域名隔离 (hostname,domainname)container 有自己的机器名
三、Docker场景
1. 本地依赖(Local Dependency)2. 搭建环境(Build Environment)3. 微服务(Microservices)4. 自动测试(Automated testing)5. 部署过程(Deployment process)6. 持续部署(Continuous Deployment)7. 多租户环境(Multi-tenancy)8. 一台机器的多个APP(Multiple apps from one machine)9. 扩容 QPS(Scaling QPS)
四、Docker安装
Docker安装:Get Docker | Docker Documentation
Docker下载: Install Docker Desktop on Windows | Docker Documentation
1、Win10安装Ubuntu子系统
2、 卸载旧版本
apt-get remove docker docker-engine docker.io containerd runc docker-compose
3、设置存储库
apt-get update
apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
4、添加Docker的官方GPG密钥
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
5、设置稳定储存库
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
6、列出系统可用的docker版本
apt-cache madison docker-ce
将最新的版本号赋值给VERSION_STRING变量
VERSION_STRING=`apt-cache madison docker-ce | head -1 | awk '{print $3}'`
或者最新版本的次版本(稳定版本)赋值给VERSION_STRING变量
VERSION_STRING=`apt-cache madison docker-ce | sed -n '2,2p' | awk '{print $3}'`
安装当前系统可用的最新版本
apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io
或者直接默认安装Docker Engine
apt-get install docker-ce docker-ce-cli containerd.io docker-compose
五、Docker配置
1、开机自启设置
systemctl enable docker
2、启动docker服务
service docker start
3、 查看docker状态
service docker status
4、时间同步配置
echo '# Generated by NetworkManagernameserver 8.8.8.8nameserver 114.114.114.114' >> /etc/resolv.conf
cat /etc/resolv.conf
apt -y install ntp
chkconfig ntpd on
systemctl is-enabled ntpd
ntpdate -u ntp.aliyun.com
5、配置docker仓库源
sudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": [ " " " " " " " " " " ]}EOF
cat /etc/docker/daemon.json
service docker restart
docker info
注意:在Windows里面用WSL使用Ubuntu,系统有SysV但是没有systemd,如遇到systemd命令按照以下命令等价使用就行了
或者使用apt命令直接安装(有风险)
apt install systemctl
mv /etc/apt/apt.conf.d/20snapd.conf /etc/apt/apt.conf.d/20snapd.conf.bak
执行docker hello-world 界面
docker run hello-world
5、下载Docker on Windows
如果自带的Ubuntu不能正常启动docker,可以在win10中下载安装再配置docker地址
Docker on Windows下载:Install Docker Desktop on Windows | Docker Documentation
Docker安装中文指南:Installation on Windows | Docker 中文指南
docker加速镜像列表
中国区:- 欢迎登录阿里云,安全稳定的云计算服务平台
{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "experimental": false, "features": { "buildkit": true }, "registry-mirrors": [ " " " " " " " " " " ]}
7、Docker on windows中启用TLS
win10的docker配置文件在 C:\Users\com\.docker 目录下(com是用户名称)
Docker Desktop的默认安装路径在:C:\Program Files\Docker\Docker
8、配置docker
echo "export DOCKER_HOST='tcp://0.0.0.0:2375'" >> /etc/profile
source /etc/profile
docker version
docker info
六、Docker命令
Docker命令文档:Docker run reference | Docker Documentation
列出所有镜像:docker images
搜索镜像:docker search 镜像
下载镜像:docker pull 镜像id:targe
删除镜像:docker rmi -f 镜像id 镜像id 镜像id
批量删除:docker rmi -f ${docker images -aq}
启动镜像: docker run [可选参数] image
--name="xxx" 给容器起名-d 后台方式运行-it 使用交互式方式运行,进入容器内部-p 指定容器端口,通常用 -p ip:主机端口:容器端口-P 随机指定端口
列出所有运行的容器:docker ps
-a 列出正在运行和历史运行的容器-n=? 显示最近创建的容器-q 只显示容器的编号
启动容器:docker start 容器id
停止容器:docker stop 容器id
强制停止容器:docker kill 容器id
重启容器:docker restart 容器id
暂停容器:docker pause 容器id
取消暂停容器:docker unpause 容器id
删除容器:docker rm 容器id
删除所有容器:docker rm -f $(docker ps -aq)
删除所有容器:docker ps -aq | xargs docker rm -f
制作镜像:docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[TAG]
启动一个远程Shell:docker run -it centos /bin/bash
拷贝容器文件到主机:docker cp 容器id:容器文件 主机目录
构造日志:docker run -d centos /bin/bash -c 'echo date; echo date; echo date'
查看日志:docker logs -ft --tail ? 容器id
查看容器端口:docker container port 容器id/容器名
查看容器占用资源:docker stats
查看容器的进程:docker top 容器id/容器名
查看进行元数据:docker inspect 容器id
查看数据卷:docker volume ls
查看数据卷信息:docker volume inspect 数据卷名
查看容器ip地址:docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器id/容器名
查看容器ip地址:docker inspect 容器id/容器名 | grep '"IPAddress":' | head -n 1 | awk '{ print $2}' | awk -F '"' '{print $2}'
进入运行的容器:docker exec -it 容器id /bin/bash(开辟新进程)
进入运行的容器:docker attach -it 容器id /bin/bash(进入原有进程)
退出容器不关闭容器: Ctrl + P + Q
退出容器并关闭容器: exit
注意:docker容器后台运行之后如果没有提供服务,docker会自动关闭该容器
七、Docker实战
1、docker安装centos7
docker search centos
docker pull centos:7
docker run -d --name=centos7-01 centos:7
docker exec -it centos7-01 /bin/bash
echo $PATHexit
docker stop centos7-01
2、docker安装tomcat
docker search tomcat
docker pull tomcat:9.0
docker run -d --name=tomcat9.0-01 -p 8081:8080 tomcat:9.0
docker exec -it tomcat9.0-01 /bin/bash
cp -r /usr/local/tomcat/webapps.dist/* /usr/local/tomcat/webapps/
docker stop tomcat9.0-01
search nginx
docker pull nginx:1.20
docker run -d --name=nginx1.20-01 -p 81:80 nginx:1.20
curl 127.0.0.1:81
docker exec -it nginx1.20-01 /bin/bash
whereis nginx
docker stop nginx1.20-01
search mysql
docker pull mysql:5.7
--provileged=true表示赋予特权 -v 主机目录:容器目录
docker run -d --name=mysql5.7-01 -p 3307:3306 \ -e MYSQL_ROOT_PASSWORD=123456 \ --privileged=true \ -v /home/mysql/mysql5.7-01/etc/mysql:/etc/mysql \ -v /home/mysql/mysql5.7-01/data:/var/lib/mysql \ mysql:5.7
如果docker安装在windows,也可以挂载,比如把/etc/mysql目录挂载到win10 G:\Hadoop\Docker\MySQL\etc\mysql 目录下,命令如下
docker run -d --name=mysql5.7-01 -p 3307:3306 \ -e MYSQL_ROOT_PASSWORD=123456 \ --privileged=true \ -v G:/Hadoop/Docker/MySQL/etc/mysql:/etc/mysql \ -v G:/Hadoop/Docker/MySQL/data:/var/lib/mysql \ mysql:5.7
docker exec -it mysql5.7-01 /bin/bash
whereis mysql
ls /etc/mysql
查看docker数据卷
docker volume ls
查看卷的具体信息
docker volume inspect
5、docker安装elasticsearch
Docker Hub
docker search elasticsearch
docker network create elknetwork
docker run -d --name elasticsearch7.16.2-01 --net elknetwork -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" elasticsearch:7.16.2
stats
docker如果不限制内存运行elasticsearch,elasticsearch将消耗当前70%以上的内存,通过-e参数设置elasticsearch
docker run -d --name elasticsearch7.16.2-01 \ --net elknetwork -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xmx2G -Xms512M" \ elasticsearch:7.16.2
docker logs -ft --tail 60 881ffaa96db2
docker exec -it elasticsearch7.16.2-01 /bin/bash
ElasticSearch集群安装:Install Elasticsearch with Docker | Elasticsearch Guide [7.5] | Elastic
5、DIY docker镜像
这里要复制当前一个tomcat容器作为docker的初始镜像,先查看tomcat镜像id
docker ps -a
docker images
-a:提交作者 -m:镜像信息 8e4690273e66:被拷贝的容器id tomcat9.0:镜像名称 v1:tag
docker commit -a "root" -m "mini visual tomcat" 8e4690273e66 tomcat9.0:v1
docker images
再次查看镜像可以看到,已经成功将容器制作成docker镜像
八、Docker可视化
查看并下载portainer组件
docker search portainer
docker pull portainer/portainer
Linux系统使用以下命令运行
docker run -d -p 9000:9000 \ --restart=always -v /var/run/docker.sock:/var/run/docker.sock \ --privileged=true --name=portainer-01 portainer/portainer
Windows系统使用以下命令运行
docker run -d -p 9000:9000 \ --restart=always -v \\.\pipe\docker_engine:\\.\pipe\docker_engine \ --privileged=true --name=portainer-01 portainer/portainer
12345678
portainer首页
portainer仪表板
docker模板
docker容器列表
docker镜像列表
九、Docker容器配置
docker容器配置有很多,比如端口映射、文件挂载、网络ip等。这里演示修改端口映射案例
docker修改容器端口映射有两种方式
打成镜像再通过run -p命令重新添加修改docker容器的配置文件实现
这里只演示通过配置文件修改的方式修改容器端口映射
1、停止修改的容器
docker stop portainer-01
2、修改hostconfig.json文件
JSON在线解析及格式化验证 - JSON.cn
文件路径: /var/lib/docker/containers/容器id/hostconfig.json
找到文件后,搜索 PortBindings,找到映射关系,这里添加一个 9001的端口映射
容器内部端口:"9001/tcp" "9000/tcp" ,主机映射端口:"HostPort":"9001" "HostPort":"9000"
"PortBindings":{ "9001/tcp":[ { "HostIp":"", "HostPort":"9001" } ], "9000/tcp":[ { "HostIp":"", "HostPort":"9000" } ] },
3、修改config.v2.json文件
文件路径: /var/lib/docker/containers/容器id/config.v2.json
(1)搜索 ExposedPorts,添加一个9001端口
"ExposedPorts":{ "9001/tcp":{}, "9000/tcp":{} },
(2)搜索 NetworkSettings,在下边的ports标签中添加9001端口
"Ports":{ "9001/tcp":[ { "HostIp":"", "HostPort":"9001" } ], "9000/tcp":[ { "HostIp":"", "HostPort":"9000" } ] },
3、重启修改端口的容器
docker start portainer-01
十、Docker卸载
1、删除docker安装包
apt-get purge docker-ce
2、删除docker配置、容器
rm -rf /var/lib/docker /var/lib/containerd
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~