文章目录
Docker 是一个用于开发、发布和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分离,以便您可以快速交付软件。使用 Docker,您可以像管理应用程序一样管理基础设施。通过利用 Docker 快速交付、测试和部署代码的方法,您可以显着减少编写代码和在生产环境中运行之间的延迟。
快速、一致地交付您的应用程序
Docker 通过允许开发人员使用提供应用程序和服务的本地容器在标准化环境中工作来简化开发生命周期。容器非常适合持续集成和持续交付 (CI/CD) 工作流程。
响应式部署和扩展
Docker 基于容器的平台允许高度可移植的工作负载。Docker 容器可以在开发人员的本地笔记本电脑、数据中心的物理或虚拟机、云提供商或混合环境中运行。
Docker 的可移植性和轻量级特性还使得动态管理工作负载、根据业务需求近乎实时地扩展或拆除应用程序和服务变得容易。
在相同硬件上运行更多工作负载
Docker 是轻量级和快速的。它为基于管理程序的虚拟机提供了一种可行且经济高效的替代方案,因此您可以使用更多计算容量来实现业务目标。Docker 非常适合高密度环境以及需要用更少资源完成更多工作的中小型部署。
3.Docker使用的是客户端-服务端(C/S)架构程序,什么是C/S、B/S?
客户端-服务端(C/S),俗称Client-Server(C/S)。例如:QQ,迅雷等,这种需要安装软件才能与服务器进行数据通信的方式就是C/S架构。
浏览器-服务端(B/S),俗称Browser-Server(B/S)。例如:仅需访问网址,就可以看片的方式就属于B/S架构。
Docker 使用客户端-服务器架构。Docker_客户端与 Docker守护进程_对话,后者负责构建、运行和分发 Docker 容器的繁重工作。Docker 客户端和守护程序_可以_ 在同一系统上运行,或者您可以将 Docker 客户端连接到远程 Docker 守护程序。Docker 客户端和守护程序使用 REST API,通过 UNIX 套接字或网络接口进行通信。另一个 Docker 客户端是 Docker Compose,它允许您使用由一组容器组成的应用程序。

镜像(image):
Docker 镜像就是一个只读的模板,可以通过这个模板来创建容器。一个镜像是可以创建多个容器的,就好像java里的类和对象一样,类是镜像,容器是对象。
容器(container):
Docker 利用容器来运行应用。容器是从镜像创建而来的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
仓库(repository):
仓库就是存放镜像的地方,分为公有仓库(Public)和私有仓库(Private)两种形式,其中官方仓库 Docker Hub是国外的,而国内很多公司,像阿里云,华为云等都有自己的容器服务,Docker默认使用的是国外的仓库,我们在国内访问就很慢,所以我们在学习的时候就需要配置镜像加速。
我们需要注意的是Docker本身并不是容器,它只是创建容器的工具,是应用容器引擎。
Build, Ship and Run 译为:构建镜像,运输镜像,运行镜像
Build(构建镜像):镜像就像是集装箱包括文件以及运行环境等等资源。
Ship(运输镜像):主机和仓库间运输,这里的仓库就像是超级码头一样。
Run (运行镜像):运行的镜像就是一个容器,容器就是运行程序的地方。
基本要求:Linux要求内核3.0以上、CentOS 需要是7版本的
[root@iZbp10xkd0ts74qqt1yjlyZ /]# uname -r
5.10.112-11.2.al8.x86_64
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
#上述方法默认是从国外的,不推荐
#推荐使用国内的,阿里云docker镜像
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
注意 : docker-ce 社区版 而ee是企业版。这里我们使用社区版即可。
yum install docker-ce docker-ce-cli containerd.io
systemctl start docker
docker version

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决这个问题。
登录阿里云->搜索 “ 容器镜像服务 ”->获取加速器地址

通过修改 daemon 配置文件 /etc/docker/daemon.json 来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}
EOF
# 重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
注意:阿里云的本人自己账号的镜像地址(需要自己注册有一个属于你自己的):https://xxxx.mirror.aliyuncs.com
docker info

由于在很多情况下需要安装docker的虚拟机或服务器无法访问互联网,因此需要离线安装docker。
下载安装包
访问https://download.docker.com/linux/static/stable/选择合适的版本并下载
在下用的是:https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz
在linux环境下,创建/root/setup/docker目录,然后拷贝下载好的资源到此目录(可通过MobaXterm工具直接上传到linux目录)
以下操作在拟安装的机器上进行
tar -zxvf docker-20.10.6.tgz
cp docker/* /usr/bin/
vim /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload
#启动Docker
systemctl start docker
systemctl enable docker.service
systemctl status docker
docker -v
我们以 Nginx 为例,体验 Docker 是如何运行容器的
# 下载镜像
docker pull nginx
# 运行容器
docker run --name nginx-container -p 80:80 -d nginx
命令解读:
浏览器输入虚拟机地址即可访问 Nginx

systemctl start docker
查看docker是否启动了,是否是运行状态
systemctl status docker

systemctl enable docker
systemctl disable docker
systemctl restart docker
docker info
systemctl stop docker
docker load < xxx.tar # xxx.tar表示镜像文件
docker images
# 格式
docker ps [参数]
docker ps # 查看当前系统中正在运行的容器列表
#参数
-a : 查看系统中所有的容器。
-q : 仅显示容器的ID
# 格式
docker run [参数] [镜像名称] [运行容器的启动命令]
# 参数
-d : 以守护进程的方式运行一个容器
docker run -d [镜像名称] [cmd]
--name : 指定容器的名称
docker run -d --name [容器名称] [镜像的名称] [cmd]
-p : 指定端口映射
docker run -d -p 宿主主机端口:容器内端口 [镜像名称] [cmd]
-P :随机端口映射
docker run -d -P [镜像名称] [cmd]
-i : 打开标准输出
-t : 创建一个伪终端
docker run -it [镜像名称] [cmd]
-v : 挂载目录到容器中
docker run -v 宿主主机目录:容器内目录 [镜像名称] [cmd]
--rm : 容器生命周期结束时立即删除
docker run --rm [镜像名称] [cmd]
-e : 在容器中创建一个环境变量
docker run -e NAME=Centos -d [镜像名称] [cmd]
--link : 连接上一个容器,实现网络互通
docker run --link 被连接的容器的名称:连接别名 [镜像名称] [cmd]
-h : 设置容器主机名
docker run -h "主机名" [镜像名称] [cmd]
# docker run 运行流程
1、检查本地是否用指定镜像,如果没有则去对应的仓库下载镜像
2、启动容器,如果指定了命令则使用指定的命令,如果没有则使用默认的命令
3、返回容器ID
容器启动后,需要进入容器做相关的操作,这个时候就需要进入到容器内部。
# 容器ID可以通过查看容器列表获得
docker attach [容器ID] # 个人最常用
docker exec -it [容器ID] /bin/bash # 这种方式也是可以的
docker rmi [镜像ID] # 如果镜像有关联容器,将执行失败
docker rmi -f [镜像ID] # 强制删除镜像,同时删除关联的容器
docker rm [容器ID] # 删除容器,如果容器在运行貌似也是删不掉的
docker rm -f [容器ID] # 强制删除
docker exec -d [容器名称] /bin/bash -c [需要执行的命令] -g "daemon off;"
示例:
docker exec -d my_container_name /bin/bash -c "nohup java -jar /home/my/xxx.jar > /home/my/log/xxx.log 2>&1 &" -g "daemon off;"
服务器安装所需:
阿里云服务器申请免费试用图文教程(个人和企业均可申请):
https://blog.csdn.net/SoulNone/article/details/126902213
安装rabbitmq图文详解步骤
https://blog.csdn.net/SoulNone/article/details/126902764

各位看官》创作不易,点个赞!!!
诸君共勉:万事开头难,只愿肯放弃。
免责声明:本文章仅用于学习参考
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我打算为ruby脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs
我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
由于fast-stemmer的问题,我很难安装我想要的任何rubygem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub
当我执行>rvminstall1.9.2时一切顺利。然后我做>rvmuse1.9.2也很顺利。但是当涉及到ruby-v时..sam@sjones:~$rvminstall1.9.2/home/sam/.rvm/rubies/ruby-1.9.2-p136,thismaytakeawhiledependingonyourcpu(s)...ruby-1.9.2-p136-#fetchingruby-1.9.2-p136-#downloadingruby-1.9.2-p136,thismaytakeawhiledependingonyourconnection...%Total%Rece