前言:
Linux Docker的安装方法,这里作为一个笔记进行归档总结。
0. Linux 简介:
Linux Standard Base
的缩写,lsb_release命令用来显示LSB和特定版本的相关信息
命令格式如下:lsb_release -a
阿里云安装手册:help.aliyun.com/document_de…
常见问题:blog.csdn.net/daluguishou…
1. 什么是Dokcer
一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口;
使用go语言编写,在LCX(linux容器)基础上进行的封装
简单介绍:
1)就是可以快速部署启动应用
2)实现虚拟化,完整资源隔离
3)一次编写,四处运行(有一定的限制,比如Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用)
为什么使用
开箱即用,快速部署,可移植性强,环境隔离
1、提供一次性的环境,假如需要安装Mysql,则需要安装很多依赖库、版本等,如果使用Docker则通过镜像就可以直接启动运行
2、快速动态扩容,使用docker部署了一个应用,可以制作成镜像,然后通过Dokcer快速启动
3、组建微服务架构,可以在一个机器上模拟出多个微服务,启动多个应用
4、更好的资源隔离和共享
Docket结构:
Docker 镜像 - Docker images:
class User{ private String userName; private int age; }
Docker 容器 - Docker containers:
容器包含了某个应用运行所需要的全部环境
User user = new User()
Docker 仓库 - Docker registeries:
用来保存镜像,有公有和私有仓库,好比Maven的中央仓库和本地私服,镜像仓库:
(参考)配置国内镜像仓库:https://blog.csdn.net/zzy1078689276/article/details/77371782
对比面向对象的方式理解Docker,通过类创建对象,通过镜像创建容器:
- Dokcer 里面的镜像 : Java里面的类 Class
- Docker 里面的容器 : Java里面的对象 Object
2. Linux安装Docker
安装前置条件
- 64-bit 系统
- kernel 3.10+
检查内核版本
返回的值大于3.10即可
uname -r
更新yum
yum update
添加yum仓库(直接拷贝即可)
tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF
安装
yum install -y docker-engine
启动docker
systemctl start docker.service
验证安装是否成功
(有client和service两部分表示docker安装启动都成功了)
docker version
设置开机自启动
sudo systemctl enable docker
查看当前进程
docker ps
3. 阿里云安装linux docker (centeros7 版本)
下面的内容使用脚本安装 Docker
1、使用 sudo
或 root
权限登录 Centos。
2、确保 yum 包更新到最新。
$ sudo yum update
3、执行 Docker 安装脚本。
$ curl -fsSL https://get.docker.com/ | sh
执行这个脚本会添加 docker.repo
源并安装 Docker。
4、启动 Docker 进程。
$ sudo service docker start
5、验证 docker
是否安装成功并在容器中执行一个测试的镜像。
$ sudo docker run hello-world
到此,docker 在 CentOS 系统的安装完成。
docker 常用命令
常用命令(安装部署好Dokcer后,执行的命令是docker开头),xxx是镜像名称
- 搜索镜像:docker search xxx
- 列出当前系统存在的镜像:docker images
- 拉取镜像:docker pull xxxxxx是具体某个镜像名称(格式 REPOSITORY:TAG) REPOSITORY:表示镜像的仓库源,TAG:镜像的标签
- 运行一个容器:docker run -d --name "xd_mq" -p 5672:5672 -p 15672:15672 rabbitmq:management
docker run - 运行一个容器 -d 后台运行 -p 端口映射 rabbitmq:management (格式 REPOSITORY:TAG),如果不指定tag,默认使用最新的 --name "xxx"
- 列举当前运行的容器:docker ps
- 检查容器内部信息:docker inspect 容器名称
- 删除镜像:docker rmi IMAGE_NAME
强制移除镜像不管是否有容器使用该镜像 增加 -f 参数,
- 停止某个容器:docker stop 容器名称
- 启动某个容器:docker start 容器名称
- 移除某个容器: docker rm 容器名称 (容器必须是停止状态)
4. Docker部署Nginx服务器
Docker部署Nginx服务器
1.获取镜像 :docker run
(首先会从本地找镜像,如果有则直接启动,没有的话,从镜像仓库拉起,再启动)
2.查找镜像:docker search nignx
3.列举镜像:docker images
4.拉取Nignx的镜像:docker pull nignx
5.启动
docker run -d --name "nginx" -p 8088:80 nginx docker run -d --name "nginx2" -p 8089:80 nginx docker run -d --name "nginx3" -p 8090:80 nginx
如果是阿里云服务,记得配置安全组,腾讯云也需要配置,这个就是一个防火墙
5. 构建自己的私人镜像
操作流程:
1)登录: docker login --username=xxx@xx.com registry.cn-xxxx.aliyuncs.com 2) 推送本地镜像: docker tag [ImageId] registry.cn-xxxx.aliyuncs.com/xd/xd_images:[镜像版本号] 例子: docker tag 2f415b0e9a6e registry.cn-xxx.aliyuncs.com/xd/xd_images:xd_rabbitmq-v1.0.2 docker push registry.cn-xxxxx.aliyuncs.com/xd/xd_images:xd_rabbitmq-v1.0.2 3)拉取镜像 线上服务器拉取镜像: docker login --username=xxx@qqxxxcom registry.cn-xxxx.aliyuncs.com docker pull registry.cn-xxxxx.aliyuncs.com/xd/xd_images:xd_rabbitmq-v1.0.2 启动容器: docker run -d --name "xd_mq" -p 5672:5672 -p 15672:15672 2f415b0e9a6e
阿里云操作流程
1. 登录阿里云Docker Registry $ sudo docker login --username=xxxxx registry.cn-xxxxx.aliyuncs.com 用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。 您可以在产品控制台首页修改登录密码。 2. 从Registry中拉取镜像 $ sudo docker pull registry.cn-xxxxx.aliyuncs.com/zxd-registry/zxd-res:[镜像版本号] 3. 将镜像推送到Registry $ sudo docker login --username=xiaolaodong11 registry.cn-xxxxx.aliyuncs.com $ sudo docker tag [ImageId] registry.cn-xxxxx.aliyuncs.com/zxd-registry/zxd-res:[镜像版本号] $ sudo docker push registry.cn-xxxxx.aliyuncs.com/zxd-registry/zxd-res:[镜像版本号] 请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。 4. 选择合适的镜像仓库地址 从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。 如果您使用的机器位于经典网络,请使用 registry-internal.cn-xxxxx.aliyuncs.com 作为Registry的域名登录,并作为镜像命名空间前缀。 如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-xxxxx.aliyuncs.com 作为Registry的域名登录,并作为镜像命名空间前缀。 5. 示例 使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE registry.aliyuncs.com/acs/agent 0.7-dfb6816 37bb9c63c8b2 7 days ago 37.89 MB $ sudo docker tag 37bb9c63c8b2 registry-vpc.cn-xxxxx.aliyuncs.com/acs/agent:0.7-dfb6816 使用"docker images"命令找到镜像,将该镜像名称中的域名部分变更为Registry专有网络地址。 $ sudo docker push registry-vpc.cn-xxxxx.aliyuncs.com/acs/agent:0.7-dfb6816