ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker-base-learn

2021-04-13 17:02:41  阅读:151  来源: 互联网

标签:容器 container image base learn 镜像 Docker docker


docker概述

Docker的思想来自于集装箱

隔离机制 核心思想 互相隔离

轻巧 与VM比较

虚拟机 Docker容器技术 均为虚拟化技术

vm linux centos 原生镜像(一个电脑)隔离,多开虚拟机 较大

docker 隔离,镜像(最核心的 环境)运行镜像 小巧

基于go语言的开源项目

Docker历史

2010年 美国 dotcloud

做 pass的云计算服务 ! LXC 有关的容器技术(命名为docker)

2013年开源(每月更新一个版本)

2014年4月9日,Docker1.0发布

Docker的作用

  • > 虚拟机技术

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h4yE7RTP-1618303524181)(C:\Users\16137\AppData\Roaming\Typora\typora-user-images\image-20210410154650218.png)]

虚拟机技术特点:

1.资源占用多

2.冗余步骤多

3.启动慢

  • > 容器化技术

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dd5b3sOi-1618303524183)(C:\Users\16137\AppData\Roaming\Typora\typora-user-images\image-20210410160335930.png)]

容器化技术不是模拟的一个完整的操作系统

比较

  1. 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在系统上安装和运行软件

  2. 容器内的应用直接运行在宿主机 的内容你,容器是没有自己的内核的,也没有虚拟硬件,因此轻便

  3. 每个容器间互相隔离,每个容器内部都有属于自己的文件系统,互不影响

    DevOps(开发、运行)

应用更快速的交付和部署

传统:一堆帮助文档,安装程序

Docker:打包镜像发布测试,一键运行

更便捷的升级和扩缩容

Docker类似于搭积木

项目打包为一个镜像,拓展,服务器A,服务器B

更简单的系统运维

容器化后, 开发,测试高度一致

更高效的计算资源利用

Docker是内核级别的虚拟化,可以在同一个物理机上运行很多个容器实例。服务器的性能可以发挥到极致!

Docker安装

Docker的基本组成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cB9wqYE6-1618303524184)(https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimages2017.cnblogs.com%2Fblog%2F699473%2F201709%2F699473-20170903165333858-1169948952.png&refer=http%3A%2F%2Fimages2017.cnblogs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1620635030&t=3316f72de525565a5c07434bebf12ba8)]

镜像(image)

docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像==>run==>tomcat01容器(提供服务器),通过镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中)

容器(container)

Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建。

启动 停止 删除 基本命令

简易的linux系统

仓库(repasitory)

存储镜像的地方

分为公有仓库和私有仓库

Docker hub (默认国外)

阿里云 华为云 都有容器服务器(配置镜像加速)

Docker的安装与卸载

环境准备

  1. 需要linux基础知识
  2. 系统

debian系,ubuntu,mint

redhat 系 RedHat,Fedora,CentOs等

3.Putty、XShell、SecureCRT、SSH Secure Shell Slien软件

环境查看

#系统内核查看 必须3.10以上
uname —r

手动安装

帮助文档

mac https://docs.docker.com/get-docker/#docker-for-mac

windows https://docs.docker.com/get-docker/#docker-for-windows/install/

linux https://docs.docker.com/get-docker/#docker-for-linux

以centos为例

#1.卸载旧版本  Docker 的旧版本被称为 docker,docker.io 或 docker-engine 
#当前称为 Docker Engine-Community 软件包 docker-ce 。

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
#2.需要的安装包
sudo yum install -y yum-utils
#3.设置镜像仓库
 yum-config-manager \
    --add-repo \
    https://mirrors.bfsu.edu.cn/help/docker-ce/#北京外国语大学开源软件镜像站
    #更新索引
    yum makecache fast
#4.安装docker ce社区  ee企业
yum install docker-ce docker-ce-cli containerd.io
#5.启动docker
systemctl start docker
#6.查看版本
docker version
#7.hello-world
 docker run hello-world
#8.查看下载hello-world
docker images
 
    
    

脚本自动安装

国内安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

国外

sudo curl -sSL https://get.daocloud.io/docker | sh

卸载docker

 #1.卸载依赖
 yum remove docker-ce docker-ce-cli containerd.io
 #2.删除资源
 sudo rm -rf /var/lib/docker
 sudo rm -rf /var/lib/containerd
#/var/lib/docker  默认位置

安装docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Ubuntu用户快速安装docker-compose

sudo apt-get update && sudo apt-get install -y python3-pip curl vim git moreutils
pip3 install --upgrade pip
pip install docker-compose

Docker的原理

Run的流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SblYpI1I-1618303524187)(C:\Users\16137\AppData\Roaming\Typora\typora-user-images\image-20210411143134087.png)]

底层原理

Docker是怎样工作的?

Docker是一个Client-Sever结构的系统,Docker的守护进程在本地运行在本地主机,通过Socket从客户端访问。

DockerSever接收到Docker Client的指令,就会执行命令。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vvyEJY1r-1618303524188)(C:\Users\16137\AppData\Roaming\Typora\typora-user-images\image-20210411143734190.png)]

Docker快的原因

Docker的抽像层比vm少

Docker利用的是宿主机的内核,vm需要的是Guest os

img

新建容器时docker不需要重新加载操作系统内核避免引导,虚拟机需要加载Guest os,docker利用操作系统内核。

img

Docker的常用命令

帮助命令

docker version #显示版本信息
docker info    #显示docker的系统信息,包括镜像和容器的数量
docker --help  #命令帮助文档

帮助文档地址:https://docs.docker.com/engine/reference/commandline/

镜像命令

docker images#查看所有本地的镜像
  #可选项
  --all , -a 		#列出所有的镜像
  --quiet , -q 		  #只显示镜像ID
docker search         #搜索镜像
  #可选项
docker pull            #下载镜像
docker rmi             #删除镜像
  #可选项
  -f 容器ID              #删除单个容器
  -f 容器ID -f 容器ID -f 容器ID #删除多个容器
  -f $(docker images -aq)  #删除全部容器

容器命令

docker run [可选参数]  images
#参数说明
--name="Name"     #容器名字
-d                #容器后台运行
-it               #使用交互方式运行,进入容器查看内容
-p                #指定容器的端口 -p 8080:8080
   -p  ip
   -p  主机端口:容器端口(常用)
   -p  容器端口
-p                随机端口

docker exec -it [name] /bin/sh  启动并进入容器
ls      查看目录
exit    退出
#列出运行的容器
docker ps      # 列出正在运行的容器
  #可选项
  -a           #列出当前正在运行的容器+历史运行过的容器
  -n=[number]  #显示最近创建的[number]个容器
  -q           #只显示容器编号 
#退出容器
exit           #容器停止并退出
Ctrl+P+Q       #容器不停止退出
#删除容器
docker rm 容器ID        #删除指定容器
docker rm -f $(docker ps -aq)  #删除所有容器
docker ps -a -q| xargs docker   #删除所有容器
#启动和停止容器操作
docker start 容器ID      #启动容器
docker restart 容器ID    #重启容器
docker stop 容器ID       #停止正在运行的容器
docker kill 容器id       #强制停止当前容器

常用其他命令

#后台启动容器
    docker run -d [imagesname]
     #问题docker ps,发现[imagesname]停止了
     #常见的坑:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
     #nginx,容器启动候,发现自己没有提供服务,就会立刻停止,就没有程序了
#查看日志
 docker logs -f -t --tail 
 -tf  #显示日志
 --tail number #要显示的条数
 #查看容器中的进程信息
 docker top 容器ID
 #查看镜像元数据
 docker inspect 容器ID
 #进入当前正在进行的容器
 #我们通常容器都是在后台运行的,需要进入容器修改一些配置
 #命令
 docker exec -it 容器ID bashshell
 方法二
 docker attach 容器ID
 #docker exec #进入容器后开启一个新的终端,可以在里面操作(常用)
 #docker attach #进入容器正在执行的终端,不会启动新的进程

从容器内拷贝到主机上

docker cp 容器ID:容器内路径 目的的主机路径

小结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h6jptu4B-1618303524192)(https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fwww.4e00.com%2Fblog%2Fimg%2Flinux%2Fdocker%2Fdocker-commands.png&refer=http%3A%2F%2Fwww.4e00.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1620730777&t=5d5209e696986fb6cfebb1de26f76710)]

attach    Attach to a running container  #当前shell下attach连接指定运行镜像
build     Build an image from a Dockerfile  #通过Dockerfile定制镜像
commit    Create a new image from a container's changes  #提交当前容器为新的镜像
cp        Copy files/folders from a container to a HOSTDIR or to STDOUT  #从容器中拷贝指定文件或者目录到宿主机中
create    Create a new container  #创建一个新的容器,同run 但不启动容器
diff      Inspect changes on a container's filesystem  #查看docker容器变化
events    Get real time events from the server#从docker服务获取容器实时事件
exec      Run a command in a running container#在已存在的容器上运行命令
export    Export a container's filesystem as a tar archive  #导出容器的内容流作为一个tar归档文件(对应import)
history   Show the history of an image  #展示一个镜像形成历史
images    List images  #列出系统当前镜像
import    Import the contents from a tarball to create a filesystem image  #从tar包中的内容创建一个新的文件系统映像(对应export)
info      Display system-wide information  #显示系统相关信息
inspect   Return low-level information on a container or image  #查看容器详细信息
kill      Kill a running container  #kill指定docker容器
load      Load an image from a tar archive or STDIN  #从一个tar包中加载一个镜像(对应save)
login     Register or log in to a Docker registry#注册或者登陆一个docker源服务器
logout    Log out from a Docker registry  #从当前Docker registry退出
logs      Fetch the logs of a container  #输出当前容器日志信息
pause     Pause all processes within a container#暂停容器
port      List port mappings or a specific mapping for the CONTAINER  #查看映射端口对应的容器内部源端口
ps        list containers  #列出容器列表
pull      Pull an image or a repository from a registry  #从docker镜像源服务器拉取指定镜像或者库镜像
push      Push an image or a repository to a registry  #推送指定镜像或者库镜像至docker源服务器
rename    Rename a container  #重命名容器
restart   Restart a running container  #重启运行的容器
rm        Remove one or more containers  #移除一个或者多个容器
rmi       Remove one or more images  #移除一个或多个镜像(无容器使用该镜像才可以删除,否则需要删除相关容器才可以继续或者-f强制删除)
run       Run a command in a new container  #创建一个新的容器并运行一个命令
save      Save an image(s) to a tar archive#保存一个镜像为一个tar包(对应load)
search    Search the Docker Hub for images  #在docker
hub中搜索镜像
start     Start one or more stopped containers#启动容器
stats     Display a live stream of container(s) resource usage statistics  #统计容器使用资源
stop      Stop a running container  #停止容器
tag       Tag an image into a repository  #给源中镜像打标签
top       Display the running processes of a container #查看容器中运行的进程信息
unpause   Unpause all processes within a container  #取消暂停容器
version   Show the Docker version information#查看容器版本号
wait      Block until a container stops, then print its exit code  #截取容器停止时的退出状态值

作业练习

练习1:安装Nginx

#1.搜索镜像 search 
#2.下载镜像 pull
#3.运行测试
#-d 后台运行
#--name 容器命名
#-p 宿主机端口:容器内部端口
root@ecs-kc1-large-2-linux-20210405130538:~# docker run -d --name nginx01 -p 3389:80 nginx
04dd3a53cb4c641708187d717f9ada1cf49f208494a944b75a688a3d93163dfa
root@ecs-kc1-large-2-linux-20210405130538:~# curl localhost:3389
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
#4.进入容器
root@ecs-kc1-large-2-linux-20210405130538:~# docker exec -it nginx01 /bin/bash
root@04dd3a53cb4c:/# ls
bin  boot  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
#5.退出容器
root@04dd3a53cb4c:/# exit
exit
#6.停止容器
root@ecs-kc1-large-2-linux-20210405130538:~# docker stop nginx01
nginx01

端口暴露

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HTofT8Kz-1618303524193)(C:\Users\16137\AppData\Roaming\Typora\typora-user-images\image-20210412180123222.png)]

作业二:安装tomcat

#官方的使用
docker run -it --rm tomcat:9.0#用完即删,一般用于测试
#下载再启动
docker pull tomcat:9.0
#启动
docker images 
docker run -d -p 8888:80 --name tomcat01  tomcat
#进入容器
#docker exec -it tomcat01 /bin/bash
#出现linux没有命令,没有wabapps 
cp -r wabapps.dist/* wabapps

作业3:部署es+kibana

#es暴露端口多
#es十分耗内存
#es十分耗内存一般需要放置在安全目录!挂载
#-net somenetwork ? 网络配置
#启动elasticsearch
docker run -d --name elasticsearch  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
#启动后 linux卡  docker stats 查看cpu状态
#测试es是否成功
#curl localhost:9200

#赶紧关闭,增加内存限制,-e 修改配置文件
docker stop 容器ID
#docker run -d --name elasticsearch  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"
-e ES_JAVA-OPTS="Xms64 -Xmx512" elasticsearch:7.6.2
#查看docker stats

作业:如何使用kibana连接es,网络如何连接

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SoVbP0SH-1618303524193)(C:\Users\16137\AppData\Roaming\Typora\typora-user-images\image-20210413111223490.png)]

可视化

portainer

Rancher(CI/CD)

标签:容器,container,image,base,learn,镜像,Docker,docker
来源: https://blog.csdn.net/weixin_44666036/article/details/115672430

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有