Docker学习——01 镜像和容器学习

介绍

docker是一个应用容器,也可以简单的理解为一个轻量级的虚拟机(当然实现原理和vm有很大区别),是一个可以快速交付应用、运行应用的技术。启动和移除都可以通过一行命令来完成,很方便

作用:

  1. 解决在微服务上,各种配置和依赖不兼容的问题
  • 原理:docker将应用的函数库、依赖、配置和应用本身一起打包,形成可移植镜像。镜像中的应用程序运行起来后就是一个容器,通过沙箱机制与其他应用的容器隔离开来

     2. 解决在开发生产环境不一致的问题

  • 原理:docker镜像中包含完整运行环境,包括系统函数库,通过系统函数库指令直接调用Linux内核,所以仅依赖系统的Linux内核,因此可以在任意Linux系统上运行

镜像和容器

镜像:docker将应用程序及其依赖、环境、配置打包在一起就是镜像(创建后只读不可修改)

容器:镜像运行起来就是容器,一个镜像可以运行多个容器,通过沙箱机制隔离

docker架构(CS架构)

  • 服务端(server):接收并处理命令,操作镜像或容器
  • 客户但(client):通过命令或请求到docker服务端

DockerHub

一个镜像的托管服务器,可以从上面拉取官方的优质镜像使用。这样的平台统称为Docker Registry

Docker安装

这里以Centos为例

#如果之前有安装docker或者没有卸载安静,可用下面命令
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

联网安装yum工具

## 1.2.安装docker

首先需要大家虚拟机联网,安装yum工具

```sh
yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken
```

安装docker

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast


#安装docker ce表示社区版免费的
yum install -y docker-ce

安装完后先关闭防火墙再启动docker

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

  启动docker

通过命令启动docker:

```sh
systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

docker -v   #查看docker版本

## 配置镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

配置如下

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://7w1ze2x3.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

整个docker就安装好了

Docker镜像相关命令

镜像命名一般分两部分组成[repository]:[tag] ,比如nginx:1.4.1,如果不指定版本号,默认为最新版本

docker images   #查看镜像
docker rmi      #删除镜像
docker pull xxx    #从服务器拉取镜像
docker push xxx    #推送镜像到服务器

这里以在docker服务器拉取nginx镜像为例,先去docker镜像仓库搜索镜像,比如DockerHub:

docker pull nginx    #去服务器拉取镜像
docker images #查看镜像信息

下载完成后,还可以通过docker save将我们下载的镜像导出磁盘,然后通过load加载回来

  1. 通过docker xx --help命令查看语法
  2. 导入nginx到一个自己定义的文件
    docker save --help #可以通过该命令查看具体如何使用docker save
    
    docker save -o nginx.tar nginx:latest
    
    #-o 指的是写出到某个文件   
    # nginx.tar指的是自己定义的一个文件,导出到镜像会存到该文件里面
    # nginx:latest  分别指的是镜像名字和版本
  3. 现在有了一个新的镜像文件后,可以把之前拉取的镜像删除,然后将刚刚导入的镜像再导出

    #删除镜像
    docker rmi nginx:latest
    
    #查看镜像是否删除成功
    docker images
    
    #导出镜像
    docker load -i nginx.tag

    任何不清楚的命令都可以通过 docker xx --help来查看使用方法

Docker容器命令

根据nginx镜像创建一个容器

docker run --name mynginx -p 80:80 -d nginx
# mynginx指的是自定义的容器名称
# -p后面将主机端口和容器端口映射,左面是主机端口,右面是容器端口
# -d后台运行容器
# nginx 镜像名字

创建完后,直接输入服务器地址即可访问nginx

下面我们进入容器内部,简单修改nginx页面

docker exec -it mynginx bash  #进入容器里面操作
# docker exec  进入容器
# -it 给当前容器创建一个标准输入、输出终端,允许我们与容器交换
# mynginx 要进入的容器名称
# bash 进入容器后执行的命令  bash是一个终端交互命令

然后找到nginx的index.html文件做修改,由于是从官方拉取,所以官方网站有相应的文件位置说明,这里就直接按照位置进去了

cd /usr/share/nginx/html  #进入指定位置
cat index.html  #查看要修改的文件

 

 由于镜像只是打包了一些简单函数,像vi这种修改命令没有打包进去,所以这里只能用替换命令来替换文件里的内容

sed -i 's#Welcome to nginx#小鱼修改的nginx#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html  #这里是设置编码

完成后刷新nginx,效果如下

通过exit退出容器

还有一些常用的容器命令

docker ps  #查看正在运行的容器
docker ps -a #查看所有容器
docker start mynginx #启动容器
docker stop mynginx #停止容器
docker rm mynginx #删除容器
docker rm -mynginx #强制删除运行中的容器

这里只做演示,通常不推荐在容器里做文件修改,太麻烦而且没有记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值