Docker虚拟机配置手札(centos)
Docker虚拟机配置手札(centos)
一、Docker只支持CentOS7及以上系统,不支持6.x系统
二、yum安装Docker
1、安装相关环境和设置仓库
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2、安装Docker社区版
yum install docker-ce docker-ce-cli containerd.io
Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。
3、启动Docker systemctl start docker
4、运行hello-world docker run hello-world
三、修改Docker镜像存放目录
docker 默认的存储路径在 /var/lib/docker ,但机子的数据盘挂载在/home目录下,
所以修改docker存储路径到 /home/docker 中。
1、查找 docker.service 配置文件,不知道配置文件在哪里可以用以下命令显示
systemctl disable docker
systemctl enable docker
显示结果
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
2、修改 docker.service 配置文件
vi /usr/lib/systemd/system/docker.service
3、在里面的EXECStart找到这样一行
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ,将其修改为
ExecStart=/usr/bin/dockerd --graph /home/docker -H fd:// --containerd=/run/containerd/containerd.sock 保存并退出
4、重载并重启docker服务
systemctl daemon-reload #重载配置文件
systemctl restart docker #重启docker
systemctl enable docker #设为自启动
5、查看docker运行信息 docker info
其中 Docker Root Dir: /home/docker 即表示已经成功修改运行目录了
6、重新下载和运行hello-world镜像
docker run hello-world
四、容器和镜像的导入导出
镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
docker images 查看镜像列表; docker ps 查看容器列表;
1、保存容器为镜像 docker commit mycentos myos202005 mycentos是容器名,即现正运行的这个虚拟机的名;myos202005是导出的虚拟机镜像名,可用于发布、备份等操作;
2、导出镜像(转格式)为文件 docker save myos202005:latest > /home/myos202005.img
3、导出容器(正在运行的虚拟机)为文件 docker export mycentos > /home/myos202005.img
4、导入镜像, docker load --input /home/myos202005.img
5、导入容器, docker import /home/myos202005.img myos202005
区别:
docker save保存的是镜像(image),docker export保存的是容器(container);
docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。
(如果VMware中的虚拟机centos空间不足,需要扩容,参考这篇文章)
五、运行虚拟机和进入虚拟机系统
1、后台运行镜像(会新建一个容器)
docker run -itd --privileged=true --name myos202005 myos202005:latest
(注:以特权模式运行,容器中才能使用启动服务systemctl等系统命令)
2、如果有运行过,则应该启动容器 docker ps -a docker start 容器ID
2、进入容器(虚拟机),使用 docker ps 查看容器信息,然后 docker exec -it 容器ID /bin/bash
3、退出容器(虚拟机),不关闭容器 Ctrl + P + Q
4、关闭容器, docker stop 容器ID ;重启容器 docker restart 容器ID ;启动容器 docker start 容器ID
5、查看包括已退出的容器 docker ps -a ;删除容器 docker rm 容器ID ;删除镜像 docker rmi 镜像ID
PS:容器ID 和 容器名是等效的,以上命令均可以用容器名替代容器ID。
六、虚拟机端口映射
1、先分别查看本机和docker机的进程端口使用情况 netstat -nlpt
2、查看容器列表信息 docker ps
3、停止容器、停止docker服务
docker stop 容器ID
systemctl stop docker
4、修改容器的配置文件,两个配置文件都要改
vi /var/lib/docker/containers/容器ID/hostconfig.json
vi /var/lib/docker/containers/容器ID/config.v2.json
PS:如果第三步修改过docker存放目录,如 /home/docker,则配置文件的位置也在相应新的位置
例如把docker中mysql 3306端口,映射到外面的13306端口,以便远程访问docker中的数据库
5、hostconfig.json修改
找到 PortBindings ,把那一段JSON修改为 "PortBindings":{"3306/tcp":[{"HostIp":"","HostPort":"13306"}]}
6、config.v2.json修改
修改值 config > ExposedPorts 和 NetworkSettings > Ports
"Config": {
.... "ExposedPorts": { "22/tcp": {}, "3306/tcp": {} }, ....
},
"NetworkSettings": {
.... "Ports": { "22/tcp":null, "3306/tcp": [{ "HostIp": "", "HostPort": "13306" }], }, ...
}
7、修改完成后先检查两个文件是否JSON格式正确
8、启动docker,启动容器, 查看容器列表信息,查看端口映射是否生效
systemctl start docker
docker start 容器ID
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
容器ID myos202005:latest "/usr/sbin/init" 3 hours ago Up 5 seconds 22/tcp, 1300/tcp, 0.0.0.0:13306->3306/tcp cranky_franklin
如上标红的 13306->3306,则表示端口映射成功
9、查看端口使用情况 netstat -nlpt ,可以看到 docker-proxy 进程使用13306端口
10、服务器防火墙开放相应的端口
查看开放的端口
firewall-cmd --list-port
添加端口(永久)
firewall-cmd --zone=public --add-port=13306/tcp --permanent
重载防火墙
firewall-cmd --reload
如果是用的阿里云,还有“安全组”策略限制了端口访问,需要在阿里云后台操作添加端口
七、Nginx / Apache 反向代理部分域名到docker中
实现效果:blog.batsing.com 正常定向在服务器中,blog.demo.batsing.com 定向到docker中。都是使用80端口。
实现过程:
1、docker机里有内网IP(默认172.17.0.2)
2、服务器可以通过此IP访问到docker中的nginx curl 172.17.0.2:80
3、服务器配置系统hosts,把demo域名指向docker内网IP
cat /etc/hosts
172.17.0.2 blog.demo.batsing.com
4、Nginx中配置vhost,将demo域名转发到域名自身
server {
listen 80; server_name blog.demo.batsing.com; location / { proxy_pass http://blog.demo.batsing.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; }
}
转发到域名自身,因为服务器的hosts配置,所以会转发到docker机中,从而实现部分域名转入到docker中的功能。
服务器中其他站点域名,按nginx正常配置即可。
docker中的nginx配置,也是按正常配置即可,无需另行特殊配置。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云同时部署DDoS高防IP+CDN+WAF
部署架构 在同时部署DDoS高防IP、Web应用防火墙,和阿里云CDN时,最佳的部署架构如下:高防IP(入口层,DDoS防护) -> CDN(静态资源加速) -> Web应用防火墙(中间层,应用层防护) -> 源站(ECS/SLB/VPC/IDC) 在上述架构缺省任何产品时,架构层级顺序不变。例如, 缺少WAF时的架构为:高防IP -> CDN -> 源站 缺少CDN时的架构为:高防IP -> WAF -> 源站 缺少高防IP时架构为: CDN -> WAF -> 源站 配置步骤 参照以下步骤,来同时接入高防IP、Web应用防火墙,和阿里云CDN。 1、配置Web应用防火墙,在源站IP中填写SLB公网IP、ECS公网IP或本地服务器IP,并在是否已使用了高防、CDN、云加速等代理? 选项下选择是添加完成后,状态如下: 2、(如果未启用CDN,则跳过此步骤)将在CDN中配置的源站,改为Web应用防火墙提供的CNAME。 3、配置DDoS高防IP,在源站域名中填入CDN提供的CNAME,或者(未启用CDN,高防IP直接回源至WAF情况下...
- 下一篇
怎么用宝塔面板安装memcached?
怎么用宝塔面板安装memcached? 宝塔面板安装memcached后可以给服务器提速,进而加快网站访问速度,提高用户体验。很多朋友不知道如何操作,赵一八分享通过宝塔面板安装memcached及详细配置方法,希望对你有用。 在前面的文章中多次介绍过宝塔面板安装memcached的过程,只是没有写的很详细,对于新手来说帮不上忙。这次小编就详细的记录下来整个过程。 一、安装memcached 以小编测试机中的php7.0为例,在宝塔面板的“软件管理”>运行环境中往下拉找到php7.0,点击最右侧的设置,看到如下php管理界面。 点击安装扩展,找到memcached,安装。稍等几分钟安装成功。 二、查看memcached缓存效率 如何查看安装好之后的memcached工作效率呢?有两种方法,一个是宝塔自带的服务状态,另一个是第三方php文件。 1、回到软件管理,找到蓝色M字样的Memcached,再点击右侧的“设置”。看到memcached管理界面。 服务:停止、重启、重载配置。 配置修改:如果不懂代码的话,不要伸手,后果自负。 负载状态:memcached运行中的相关状态。其中最重...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Mario游戏-低调大师作品
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker快速安装Oracle11G,搭建oracle11g学习环境