想起第一次用Docker的原因,当时还在读书,所以手里的海外服务器并不多。当时为了方便自己科学上网查学习资料,由于众所周知的原因,必须得用手里数量不多的服务器来代理了。但是手里又有其它服务需要跑,那么一台服务器运行包括科学上网在内的众多服务也就司空见惯了。然而令人头痛的就在这里,因为不同服务的环境问题,导致某些服务通常只能正常运行其中一个,这种情况下,我就只能进行环境隔离了。所以,首先想到的就是利用容器了,也就开始用起了Docker。
后记:果然懒才是第一生产力,后面直接分别写了公共脚本和自己私用的shell脚本,直接一把梭😅
Docker: 与社区共同成长
使用Docker的过程中,其实也并不是想象的那么美好,不过好在,Docker经过这几年的迭代,变得越来越优秀,而我的技术也在稳步提升。这几年,提供容器服务的厂商,井喷式的增长,当然,也有不少被薅倒闭的,曾经的三大容器服务,如今只剩 HeroKu
还在继续。虽然 Heroku
每个月免费额度只有550小时,但是它不同地域、不同容器之间,竟然可以做负载均衡,曾经一度是科学上网“最佳实践”。
最开始,只是想着把不同服务的环境隔离开,才使用Docker。到后来,每次接触到新技术,我都会去看能不能用 Docker 运行。就好比“世界运行在 SharePoint 上一样”(doge,我绝大部分的服务,都是跑在 Docker 上的,包括开发、测试和部署环境。在确保开发与生产之间一致性的同时,我可以完全在本地进行编码和测试。
到毕业后,惊喜的发现,不少公司面试的时候,熟悉 Docker 都是一个加分项(明明只是开发,硬是被逼成了全干工程师🤣
几乎所有主流平台,我都使用过,但限于我有60%的服务器是 CentOS 7.x
,那就围绕这个系统来写吧。
1 2 3 4 5 6 7 8 | [root@besscroft ~]# sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine |
---|
1 2 3 4 5 | [root@besscroft ~]# sudo yum install -y yum-utils [root@besscroft ~]# sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo |
---|
1 | [root@besscroft ~]# sudo yum install docker-ce docker-ce-cli containerd.io -y |
---|
如果提示您接受 GPG 密钥,请验证指纹是否匹配
060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
,如果是,则接受它。
1 2 | [root@besscroft ~]# sudo systemctl enable docker [root@besscroft ~]# sudo systemctl start docker |
---|
1 | [root@besscroft ~]# docker pull redis:6.0.9 |
---|
1 2 | [root@besscroft ~]# mkdir conf [root@besscroft ~]# mkdir data |
---|
1 2 3 4 5 | [root@besscroft ~]# docker run -d -p 6379:6379 --restart always --name bess-redis \ -v /root/conf/redis.conf:/usr/local/etc/redis/redis.conf \ -v /root/data:/data \ redis:6.0.9 redis-server /usr/local/etc/redis/redis.conf \ --requirepass "password" --appendonly yes |
---|
-d 在后台运行 -p 6379:6379 端口映射,左边为宿主机的端口,右边为容器的端口 --restart always 自动启动 --privileged=true 给容器root权限 -v /root/conf/redis.conf:/usr/local/etc/redis/redis.conf 挂载配置文件,冒号左边为宿主机,右边为容器 -v /root/data:/data 数据目录,冒号左边为宿主机,右边为容器 --requirepass 冒号里面填密码,也可以在conf里面配置 --appendonly 是否开启持久化,也可以在conf里面配置
1 | [root@besscroft ~]# docker network create somenetwork |
---|
1 | [root@besscroft ~]# docker run -d --name <容器名> --net somenetwork -p<主机端口>:<容器端口> <镜像名>:<版本号> --appendonly yes |
---|
基本上大部分容器可以按照此思路来。
1 | [root@besscroft ~]# docker pull registry.cn-hangzhou.aliyuncs.com/supermanito/jd |
---|
1 2 3 4 5 6 7 8 9 10 11 12 | [root@besscroft ~]# docker run -dit \ -v D:/data/jd/scripts:/jd/scripts `# 设置活动脚本的主机挂载目录为D:/data/jd/scripts` \ -v D:/data/jd/config:/jd/config `# 设置配置文件的主机挂载目录为D:/data/jd/config` \ -v D:/data/jd/log:/jd/log `# 设置日志文件的主机挂载目录为D:/data/jd/log` \ -p 5678:5678 `# 设置端口映射,格式为 "主机端口:容器端口",主机端口号可自定义` \ -e ENABLE_HANGUP=true `# 启用挂机功能` \ -e ENABLE_WEB_PANEL=true `# 启用控制面板功能` \ --name jd `# 设置容器名为 jd ` \ --network bridge `# 设置容器网络类型为桥接,直连主机` \ --hostname jd `# 设置容器内主机名为 jd ` \ --restart always `# 设置容器开机自启` \ registry.cn-hangzhou.aliyuncs.com/supermanito/jd |
---|
推荐2本书:《Docker实战》、《第一本Docker书》,我只看过《第一本Docker书》,个人感觉还不错。
然后就是官方文档了,已经够详细了,碰到问题也可以去仓库的issues看看。
2021年4月15日,Docker能够运行在M1芯片的Macbook上面了,也预示着 ARM 架构的未来。虽然现在还需要安装 Rosetta 来进行兼容,当你想要在官网下载时,就会提醒你。V站上不少人都说,M1开发很香😯现在估计就是兼容性问题,让很多人不敢上车。
不过我这里还是忍不住吐槽一下,苹果你不出小键盘,我是绝对不会买 MacBook 的🙄反正不买也能照样用 MacOS,而且性能也不差。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。