linux系统之docker(一)——认识docker并搭建docker

一. 什么是docker

在了解docker之前,我们必须先清楚docker和虚拟机的不同

  • 虚拟机
    我们用的传统虚拟机如 VMware ,VisualBox 之类的需要模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用
    每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统
  • 容器
    容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。
    容器包含应用和其所有的依赖包,但是与其他容器共享内核。
    容器在宿主机操作系统中,以进程的方式运行。
  • docker
    Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
    Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker ,就不用担心环境问题。
    总体来说, Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

二.Docker包含的三个基本概念

  • Image(镜像)
    镜像(Image)就是一堆只读层(read-only layer)的统一视角

  • Container(容器)
    容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

  • Repository(仓库)
    Docker 仓库是集中存放镜像文件的场所。
    仓库又可以分为两种形式:
    public(公有仓库)
    private(私有仓库)

三.docker的常用命令

命令 作用 补充
docker load -i ubuntu.tar 导入镜像
docker create 为指定的镜像(image)添加了一个可读写层,构成了一个新的容器 这个容器并没有运行
docker start vm1 启动容器 创建了一个进程隔离空间
docker run 启动并运行容器 docker create和docker start两个命令的组合
docker ps 查看容器状态,当前活跃的
docker ps -a 查看所有的容器状态
docker attach vm1 连接容器
docker inspect vm1 查看容器详情
docker stats vm1 查看容器资源使用率
docker diff vm1 查看容器修改
docker stop vm1 停止容器
docker start vm1 启动容器
docker rm vm1 删除容器 只能对非运行态容器执行
docker rm -f vm1 强制删除容器
docker rmi ubantu 删除镜像
docker images 列出镜像
docker images –a 命令列出了所有的镜像 也可以说是列出了所有的可读层
docker history 查看某一个image-id下的所有层
docker kill vm1 强制干掉容器
docker restart vm1 重启容器

四.安装docker

搭建环境:
物理机:172.25.3.250
docker环境机:172.25.3.100

  • 第一步:将docker的安装包和docker所需要的一些依赖性放在同一个文件夹中并将其发布在http的默认发布页面中。
    linux系统之docker(一)——认识docker并搭建docker_第1张图片

  • 第二步:在需要安装docker的主机中配置相关路径的yum源
    linux系统之docker(一)——认识docker并搭建docker_第2张图片

  • 第三步:直接使用yum 安装docker
    yum install docker-ce -y
    linux系统之docker(一)——认识docker并搭建docker_第3张图片

  • 第四步:查看docker的运行
    [root@docker ~]# systemctl start docker
    [root@docker ~]# docker version
    linux系统之docker(一)——认识docker并搭建docker_第4张图片
    执行后Runtimes: runc这个必须为runc
    runC是一个遵循OCI标准的用来运行容器的命令行工具(CLI Tool),它也是一个Runtime的实现。尽管你可能对这个概念很陌生,但实际上,你的电脑上的docker底层可能正在使用它。
    [root@docker ~]# docker info

linux系统之docker(一)——认识docker并搭建docker_第5张图片

五.利用docker部署game2048,nginx服务并创建一个交互式容器

(1)部署game2048

  • 第一步:获取game2048的镜像
    linux系统之docker(一)——认识docker并搭建docker_第6张图片

  • 第二步:导入2048镜像
    linux系统之docker(一)——认识docker并搭建docker_第7张图片

  • 第三步:查看镜像信息
    linux系统之docker(一)——认识docker并搭建docker_第8张图片

  • 第四步:创建容器game1,并运行
    -d 打入后台 ;-p 端口映射;- -name 指定容器的名字
    [root@docker mnt]# docker run -d -p 80:80 --name game1 game2048
    linux系统之docker(一)——认识docker并搭建docker_第9张图片
    当使用-P(大写P)标记时,Docker会随机映射一个端口到内部容器开放的网络端口(端口范围在Linux系统使用的端口之外,一般都过万)
    当使用-p(小写p)可以指定要映射的端口,并且在一个指定的端口上只可以绑定一个容器。

  • 第五步:查看容器信息
    ##列出镜像
    [root@docker mnt]# docker images
    ##查看容器状态
    [root@docker mnt]# docker ps
    ##查看容器状态
    [root@docker mnt]# docker ps -a
    ##查看端口
    [root@docker mnt]# netstat -antlupe
    ##查看容器信息
    [root@docker mnt]# docker inspect game1

linux系统之docker(一)——认识docker并搭建docker_第10张图片

  • 第五步:验证

linux系统之docker(一)——认识docker并搭建docker_第11张图片

(2)利用docker搭建一个nginx服务

第一步:导入nginx镜像,并查看镜像
[root@docker mnt]# docker load -i nginx.tar
[root@docker mnt]# docker images
linux系统之docker(一)——认识docker并搭建docker_第12张图片
第二步:给nginx镜像重新贴一个标签
[root@docker mnt]# docker history e548f1a579cf
[root@docker mnt]# docker tag nginx:latest nginx:1.13.9
[root@docker mnt]# docker images
linux系统之docker(一)——认识docker并搭建docker_第13张图片
第三步:运行nginx镜像
[root@docker mnt]# docker run -d --name v1 -p 8080:80 nginx

linux系统之docker(一)——认识docker并搭建docker_第14张图片
第四步:测试
linux系统之docker(一)——认识docker并搭建docker_第15张图片

第五步:挂载本机目录到容器里
[root@docker ~]# docker stop vm1
[root@docker ~]# docker rm vm1
[root@docker ~]# docker ps -a
[root@docker ~]# docker run -d -p 8080:80 --name vm2 -v /tmp/docker/:/usr/share/nginx/html/:ro nginx
linux系统之docker(一)——认识docker并搭建docker_第16张图片

通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径;也可以指定挂载目录的权限

docker run -d -p 8080:80 --name vm2 -v /tmp/docker/:/usr/share/nginx/html/ nginx
docker run -d -p 8080:80 --name vm2 -v /tmp/docker/:/usr/share/nginx/html/:ro nginx

第六步:测试
linux系统之docker(一)——认识docker并搭建docker_第17张图片

(3)利用docker搭建一个交互式容器

第一步:导入镜像并查看镜像
[root@docker mnt]# docker load -i ubuntu.tar
第二步:运行容器,创建一个交互式的容器镜像
[root@docker mnt]# docker run -it --name vm3 ubuntu
-it表示打开交互式docker界面(ubuntu自带,rhel镜像需要在后面再加bash)
第三步:在容器中查看内核版本
root@ea18269d2300:/# uname -r
linux系统之docker(一)——认识docker并搭建docker_第18张图片
第四步:在物理机中查看内核版本
[kiosk@foundation3 ~]$ uname -r
linux系统之docker(一)——认识docker并搭建docker_第19张图片
由此可以证明,容器是和物理机共用一个内核。

补充:docker交互式界面时
ctrl + pq ##退出容器但不关闭容器
[root@server3 ~]# docker attach vm3 ##可以直接进入容器

ctrl + D ##退出并关闭容器,下次登陆时需要开启
[root@server3 ~]# docker start vm3 ##打开关闭的容器
[root@server3 ~]# docker attach vm3 ##再进入容器

docker rm vm3 删除容器
docker rm -f vm2 强制删除容器
docker rmi ubuntu:vm3 删除镜像

你可能感兴趣的:(企业linux)