云原生-docker 概念以及安装(以nginx为例)

解决的问题

1:统一的标准

  • 应用构建

docker 之前的软件可能用各种不同的语言,各种不同的软件包(压缩包,文件夹,源程序(让我们自己打),不像是windows 中统一的.exe格式的包简单直接) 而docker 提供了这个标准 直接docker build … 直接打包成一个统一的镜像文件

  • 应用分享

把所有打包的镜像上传到docker hub (类似于软件商店)谁都可以用‘

  • 应用运行

统一的标准镜像,造成统一的启动方式 docker run 非常简单

2:容器化与虚拟化的区别

虚拟化:在一个服务器中安装几个虚拟机,虚拟机之间不会相互影响,隔离性强,不会造成一个应用系统内存泄露,整个服务器中所有的应用系统就都不能使用的情况,相对于容器化技术有点重量级

云原生-docker 概念以及安装(以nginx为例)_第1张图片

容器化技术:Linux 发布 docker 做了封装
摒弃了虚拟机的笨重化设计,以前的每一个虚拟机又是一个完整的操作系统,Docker 容器虽然也是隔离的系统,但是它只保存一些差异化的东西,并不是再搞一个完整的操作系统

云原生-docker 概念以及安装(以nginx为例)_第2张图片

3:docker架构

云原生-docker 概念以及安装(以nginx为例)_第3张图片
云原生-docker 概念以及安装(以nginx为例)_第4张图片

4:docker安装

4.1:卸载之前的docker相关软件

yum remove docker*

4.2:安装docker 的yum 工具类

sudo yum install -y yum-utils

sudo 是管理员权限的意思
-y是 一路自动确定 不用询问的意思

4.3:添加docker 的安装源地址

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.3:安装最新docker

sudo yum install -y docker-ce docker-ce-cli containerd.io

docker-ce: docker的社区版本
docker-ce-cli docker 的命令行
containerd.io docker 容器化的运行环境

4.3:安装指定版本docker

sudo yum install -y docker-ce -版本号

4.4: docker开机启动并现在就启动

systemctl enable docker --now

4.4: 查看docker信息

docker info docker的详细信息
docker -v docker版本号

5:Docker 镜像命令

5.1: 找镜像 以nginx为例 nginx的镜像相关目录结构以及配置 可以查看hub.docker.com)

去docker.hub(hub.docker.com)上找到镜像

docker pull nginx:版本号 不加默认最新

5.2: 查看下载到本地的镜像

docker images

5.3: 移除镜像

docker rmi nginx:版本号  不加版本号 默认移除latest(最新)版

5.3: 修改镜像名称

docker tag 镜像id 新名称

6:Docker 容器命令

6.1: 容器启动

安装好镜像之后就可以启动容器了

docker run --name mynginx -d  -p 88:80 --restart=always nginx

docker run --help 命令说明
– name 给容器起名字
-d 表示后台运行,如果不设置一会应用就会停掉
–restart-always 开启自启动
-p 端口映射 如果不将服务器的端口进行映射到nginx的80端口,公网是访问不到nginx的

6.2: 删除已经停止的容器

名字不能重复 即使已经停掉的应用,如果重复只能删除然后再启动

docker rm nginx id或者应用的名字

docker rm -f 强制删除 即使运行的容器

6.3: 查看运行的容器

查看所有容器

docker ps -a  

运行的容器

docker ps  

查看最后一次运行的容器

docker ps –l

查看停止的容器

docker ps -f status=exited

6.4: 停止容器

docker stop 容器id/名字 

6.5: 再次启动容器

docker start 容器id/名字 

6.6: 更新容器设置(不能映射端口)

docker update 容器id/名字  设置参数(比如开机自启动 --restart=always)

6.7:修改容器内容

6.7.1 进入容器的内部系统(交互模式),bash控制台,修改文件内容

bash控制台,相当于进入另外一个Linux系统,每一个容器都是一个小系统

docker exec -it 容器的id  /bin/bash

bash控制台,相当于进入另外一个Linux系统,每一个容器都是一个小系统

bash控制台,相当于进入另外一个Linux系统,每一个容器都是一个小系统

6.7.2 进入容器的bash控制台->编辑文件

替换文件内容,echo 输出内容到指定文件

echo "替换内容" > 文件

云原生-docker 概念以及安装(以nginx为例)_第5张图片

6.8:提交容器改变

6.8.1 提交容器

commit 命令会保存一个新的镜像文件到服务器上 使用docker images 命令可以查看

docker commit [配置项] CONTAINER [REPOSITORY[:TAG]]

Options:
-a, --author string Author (e.g., “John Hannibal Smith
[email protected]”)
-c, --change list Apply Dockerfile
instruction to the created image
-m, --message string Commit
message
-p, --pause Pause container during commit
(default true)

6.9:镜像传输

6.9.1 物理传输 将镜像打包成物理压缩包 传到别的服务器上

将机器打包为实体文件,默认tar包

docker save [OPTIONS] IMAGE [IMAGE...]
docker save -o sourcenginx.tar niunginx:v1.0 

sourcenginx.tar 压塑包的名字 自己起
niunginx:v1.0 想要传输的镜像 名称以及版本
在这里插入图片描述
进行传输
复制文件 使用root 用户 传输到目标服务器的指定目录(比如root)下 第一次使用scp 命令需要输入密码

scp sourcenginx.tar root@192.168.200.169:/root/ 

传输成功 将文件读取出来 成为镜像 并且使用run命令运行

docker load -i sourcenginx.tar	
6.9.1 推送到hub.docker 远程仓库上,然后通过远程仓库下载
  1. 首先需要去远程仓库上创建一个新的项目也可以说新的仓库
  2. 然后在我们的服务器上使用命令将本地的镜像名改成远程指定的仓库名称
  3. 登录远程仓库
  4. 推送
docker tag local-image:tagname new-repo:tagname

local-image:tagname 本机的镜像名称以及版本号
new-repo:tagname 目标仓库完整的仓库名称再加个版本号

进行推送

docker push new-repo:tagname

进行推送可能会推送失败 原因是没有登录 需要使用docker login 命令输入账号密码登录 才可以推送成功
推送完成镜像后 退出远程仓库:docker logout

6.10:挂载数据到外部修改 一旦挂载就无法提交改变(commit)

6.10.1:概念

将本机上的某一个目录与容器上的目录建立连接,修改容器里面的内容不用进入(使用exec命令 交互模式)容器内部再进行修改,修改主机上的目录内容就相当于修改目标机器(容器)上对应目录的内容,要实现数据挂载,那docker容器的启动方式 需要加一个配置项 -v

6.10.2:实现

重新启动 加-v 配置项

docker run --name=mynginx \
-d --restart=always \
-p 88:80 -v /data/html:/usr/share/nginx/html:ro \ nginx

说明

88:80 -v /data/html:/usr/share/nginx/html:ro

  1. 将88端口的主机目录 /data/html 挂载到80端口的nginx 的指定/usr/share/nginx/html目录上
  2. :ro的意思是主机只读 rw 是主机也可以修改
  3. 注意:指定目录只要挂载了,主机上没有的,nginx容器上也没有 ,所以外部访问nginx的时候也就访问不到了(因为 主机的/data/html下并没有页面文件),要想访问到需要在主机上也创建一个对应的页面文件,所以要是nginx的配置文件要实现挂载,那么就需要把nginx的配置文件完整的复制到主机对应目录下 否则,nginx会出问题

6.11:查看容器的运行日志

docker logs 容器id/容器名

6.12:把指定容器的某一个文件/目录复制到主机(cp命令)

docker cp 容器id:文件目录  目标主机目录 
将外部内容复制到容器里面
docker cp   目标主机目录 容器id:文件目录

8:机器重启

reboot

9:搜索命令

Linux whereis命令用于查找文件。

你可能感兴趣的:(虚拟化技术,JAVA容器,docker,云原生,运维)