docker 基本管理

Docker是什么?

是一种轻量级的“虚拟机”

在Linux容器里运行应用的开源工具

Docker与虚拟机的区别

Docker与虚拟机的区别:

特性

Docker 容器

虚拟机

启动速度

秒级

分钟级

计算能力损耗

几乎无

损耗 50%左右

性能

接近原生

弱于

系统支持量(单机)

上千个

几十个

隔离性

资源限制

完全隔离

Docker的使用场景

打包应用程序简化部署

可脱离底层硬件任意迁移

例:服务器从腾讯云迁移到阿里云

Docker的核心概念及安装方式

Docker核心概念

镜像

容器

仓库

CentOS安装Docker的两种方式

使用CURL获得Docker的安装脚本进行安装

使用YUM仓库来安装Docker

案例:安装Docker及基本管理

案例环境

主机

操作系统

主机名/IP地址

主要软件及版本

服务器

Centos 7.3 x86-64

Localhost/192.168.168.91

       Docker-18.03.0-ce

需求描述

安装Docker

完成最基本Docker操作管理(创建、启动、参数等)

完成Docker创建资源控制及数据卷管理

1,安装docker

安装docker 有多种方法

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

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

yum install -y yum-utils device-mapper-persistent-data lvm2 
yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo

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

以上 命令都可以安装 docker

安装完成 启动服务

systemctl start docker

systemctl enable docker

登录浏览器 输入 https://hub.docker.com/ 登录 docker

https://hub.docker.com/

不需要登录 可以直接搜索

 查找 到镜像 复制 可以直接下载 这里用 nginx 举例

 

主机里面 粘贴 命令直接下载 镜像

[root@localhost ~]# docker pull nginx:1.18.0-alpine

在下载一个centos镜像

[root@localhost ~]# docker pull centos:centos7.9.2009

查看 docker 里面下载的所有镜像

[root@localhost ~]# docker images

查看镜像具体信息 比如 docker inspect 镜像名:版本号

[root@localhost ~]# docker inspect nginx:1.18.0-alpine

当 镜像名字后面不跟版本号时 默认是 最新版本[latest] 比如 下载的时候

[root@localhost ~]# docker pull nginx

修改名字

修改名字 不会覆盖 而是 重新创建一个出来

[root@localhost ~]# docker tag nginx:1.18.0-alpine nginx:kgc01

[root@localhost ~]# docker images

删除 镜像

docker rmi 镜像名字:版本号 或者镜像ID

[root@localhost ~]# docker rmi nginx:kgc01

[root@localhost ~]# docker images

镜像 存入和载出

载出镜像 保存为文件

[root@localhost ~]# docker save -o centos_7.9.2009.tar centos:centos7.9.2009

[root@localhost ~]# docker save -o nginx_1.18.0-alpine.tar nginx:1.18.0-alpine

[root@localhost ~]# ls

 删除 所有镜像

模拟现在是没有镜像的环境

[root@localhost ~]# for i in $(docker images -q); do docker rmi $i ;done

载入 镜像

[root@localhost ~]# docker load < nginx_1.18.0-alpine.tar

或者重定向输入 换成-i

[root@localhost ~]# docker load -i centos_7.9.2009.tar

[root@localhost ~]# docker images

创建容器

[root@localhost ~]# docker create nginx

查看 容器

这时是查看不到的 因为 ps 是查看正在运行 的容器 没有运行的 容器是查看不到的

所以需要加 -a 选项

查看所有 容器

[root@localhost ~]# docker ps  -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS    PORTS     NAMES
7df842ca2686   nginx     "/docker-entrypoint.…"   15 seconds ago   Created             focused_grothendieck

启动容器

关闭容器时 吧start 换成stop 就可以了

[root@localhost ~]# docker start sleepy_dubinsky

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS         PORTS     NAMES
7df842ca2686   nginx     "/docker-entrypoint.…"   56 seconds ago   Up 3 seconds   80/tcp    focused_grothendieck

删除容器

删除容器 一定要先 关闭 容器

[root@localhost ~]# docker stop sleepy_dubinsky
sleepy_dubinsky
[root@localhost ~]# docker rm sleepy_dubinsky
sleepy_dubinsky
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]# 

启动容器 用得 最多的是 run

[root@localhost ~]# docker run nginx

这时 服务 在前端 执行 ctrl+c 终止掉后 容器 也会 自动停止

可以加一个-d 选项 让他在后台 执行

[root@localhost ~]# docker run -d nginx
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS     NAMES
4a9ca85703c5   nginx:1.18.0-alpine   "/docker-entrypoint.…"   14 seconds ago   Up 13 seconds   80/tcp    inspiring_volhard

做 端口 映射

-p 指定 端口 -P 随机 端口

-p 让宿主机的82端口 映射到容器的80 端口
就是说 访问宿主机的82端口 就是访问 容器的80 端口

[root@localhost ~]# docker run -d -p 82:80 nginx 

删掉

[root@localhost ~]# docker stop d18;docker rm d18

删除 所有容器

for i in $(docker ps -aq);do docker stop $i ;docker rm $i ;done

启动centos容器

这时 会发现 容器 启动后立刻自动关闭了

[root@localhost ~]# docker run -d centos:centos7.9.2009

可以在后面 加上一个时间 10秒后关闭

[root@localhost ~]# docker run -itd centos:centos7.9.2009 sleep 10

使用tail -f 让容器 一直启动

[root@localhost ~]# docker run -itd centos:centos7.9.2009 tail -f /etc/passwd 
111d9d4ae1290bec36a6f8a856aa53f102fb0eb21ea33da8356d90af823a3008
[root@localhost ~]# 
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE                   COMMAND                 CREATED         STATUS        PORTS     NAMES
111d9d4ae129   centos:centos7.9.2009   "tail -f /etc/passwd"   2 seconds ago   Up 1 second             affectionate_jepsen
[root@localhost ~]# 

创建镜像

进入 容器 进入 容器 可以排查 问题原因

[root@localhost ~]# docker exec -it affectionate_jepsen bash

[root@111d9d4ae129 /]#

容器里面 没有东西 需要什么 使用yum安转即可

创建一个Java镜像

[root@111d9d4ae129 /]# java

bash: java: command not found      ##容器里面Java 没有安装

使用yum 安装

[root@111d9d4ae129 /]# yum -y list | grep jdk        ##找一下Java的包
[root@111d9d4ae129 /]# yum -y install java-1.8.0-openjdk

[root@111d9d4ae129 /]# java -version
openjdk version "1.8.0_332"
OpenJDK Runtime Environment (build 1.8.0_332-b09)
OpenJDK 64-Bit Server VM (build 25.332-b09, mixed mode)
[root@111d9d4ae129 /]# exit
[root@localhost ~]# docker export affectionate_jepsen > centos_java.tar
[root@localhost ~]# ls
anaconda-ks.cfg      centos_java.tar

把 tar包 加载为镜像

[root@localhost ~]# cat centos_java.tar  | docker import - centos:java
[root@localhost ~]# docker images
REPOSITORY   TAG              IMAGE ID       CREATED          SIZE
centos       java             79129bee4170   37 seconds ago   554MB

查看镜像 里面的Java 环境 有没有保存成功

[root@localhost ~]# docker run -d centos:java  sleep 9999
[root@localhost ~]# docker exec -it  nifty_pascal bash
[root@56489ffc4557 /]# 
[root@56489ffc4557 /]# java -version
openjdk version "1.8.0_332"
OpenJDK Runtime Environment (build 1.8.0_332-b09)
OpenJDK 64-Bit Server VM (build 25.332-b09, mixed mode)
[root@56489ffc4557 /]# 

实验

实验资源:

系统

IP地址

上网模式

主要软件

centos7.9

192.168.10.128

NET

Docker

nginx

实验要求:

  1. 安装Docker
  2. 使用centos7.16.1810运行一个容器
  3. 进入容器使用yum安装nginx
  4. 在网页根目录写一个index.html文件,内容:This is KGC
  5. 启动nginx服务
  6. 退出容器,将容器导出成一个文件,文件名:centos_nginx.tar
  7. 将文件加载成镜像,镜像名为centos:nginx
  8. 基于centos:nginx启动一个容器
  9. 要求 后要启动,宿主机的80端口映射到容器的80端口

实验步骤:

1)搭建基础环境

systemctl disable firewalld --now

setenforce 0

yum clean all && yum makecache

2)安装Docker

上面三条命令  哪一条都可以用

3)下载centos7.6.1810镜像

查看镜像的网站: Docker

docker -version

docker pull centos:centos7.6.1810

docker images

4)创建一个centos的容器并进入容器

docker run -itd -p 80:80 centos:centos7.6.1018 tail -f /etc/passwd

docker ps -a

docker exec -it 容器名 bash

5)安装nginx并修改配置文件;写一个index.html文件,内容:This is KGC

vi /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

yum -y install nginx

nginx

cd /usr/share/nginx/html/

mv index.html{,.bak}

vi index.html

This is KGC

查看网页:192.168.10.128:80

6)关闭容器并导出成一个文件

docker ps -a

docker stop agitated_perlman

docker export agitated_perlman > centos_nginx.tar

7)删除容器

docker rm agitated_perlman

8)使用导出的镜像文件启动一个容器

docker ps -a cat centos_nginx.tar | docker import - centos:nginx docker images

9)进入容器并启动nginx

docker exec -it inspiring_nobel bash

nginx

10)验证

查看网页:192.168.10.128:80

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值