docker学习记录

本文在虚拟机中运行,操作系统centos7

1.安装必要的包和配置仓库

 sudo yum install -y yum-utils

 sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

2.安装最新发布的docker版本

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

3.启动docker

 sudo systemctl start docker

4.运行docker

sudo docker run hello-world

插播:配置docker阿里云镜像,首先登录阿里云,搜素docker镜像加速器,配置如下

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

Docker镜像:Docker镜像类似Linux ISO镜像文件,底层模板,镜像中存储的各种软件、程序、LIB库、依赖环境等,Docker镜像结构分层(层次)的结构,每一层存储不同的软件和功能,镜像是只读的,不能被修改;

Docker容器:Docker容器基于Docker镜像运行之后实体,Docker容器的底层是镜像,Docker容器所需文件、软件可以从镜像层中读取,没有镜像,就没有Docker容器,镜像是静止的,容器是活动的(进程和程序的关系);

Docker仓库:Docker仓库是用于存储Docker镜像文件的地方,仓库分为公共和私有仓库,企业生产环境推荐自建私有仓库(安全、稳定、速度快);

镜像(image):类似于一个模板,java中的一个实体类

容器(container):容器是通过镜像创建的,一个镜像可以创建多个容器,类似于一个实体类可以有多个对象,对象可以执行类里的方法,就是容器的基本操作命令

仓库(repository):存储镜像的地方

systenctl start docker是启动docker的服务,类似于启动tomcat服务器(只有启动了服务以后才可以使用这个服务,run,start)

image.png

docker run

docker run只有在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器的时候,只需要使用命令docker start就可以。
docker run相当于执行了两步操作:将镜像(Image)放到容器(Container)中,这一步过程叫做docker create,然后将容器启动,使之变成运行时容器(docker start)。

docker start

docker start的作用是:重新启动已经存在的容器。也就是说,如果使用这个命令,我们必须先要知道这个容器的ID、或者这个容器的名字,我们可以使用docker ps命令找到这个容器的信息。

数据卷挂载

docker run -it -v 主机文件夹:容器文件夹 镜像名称 /bin/bash

将主机和容器内部使用的地址进行双向绑定,一端对数据进行操作,另一端也跟着变化

这样操作数据就可以不用进到容器里面,在主机就可以直接操作文件夹下的数据,好处是即使容器删掉,挂载到本地的数据也不会丢失的

数据卷容器

容器继承关系,可以进行容器间的数据共享,共享数据之后,即使删除其中一个容器,哪怕是被继承的容器,数据也不会丢失;原理是双向拷贝机制,每个容器里都拷贝了一份,但是当持久化到本地后,本地的数据是不会删除的

docker run -it --name docker02 --volumes-from docker01 容器名称

当项目需要做集群时,配置文件只需要共享就可以,容器生命周期是直到没有人使用为止

DockerFile

docker是用来构建docker镜像的文件,是命令参数的脚本

构建步骤:

1.写dockerfile文件

2.docker build构建成为一个镜像

3.docker run 运行镜像

4.docker push  发布镜像(DockerHub,阿里云镜像仓库)  就像在码云上建一个开源项目

dockerfile 也有一些指令

Dockerfile常用指令
指令    描述
FROM    构建新镜像是基于哪个镜像
LABEL    标签
RUN    构建镜像时运行的Shell命令
COPY    拷贝文件或目录到镜像中
ADD    解压压缩包并拷贝
ENV    设置环境变量
USER    为RUN、CMD和ENTRYPOINT执行命令指定运行用户
EXPOSE    声明容器运行的服务端口
WORKDIR    为RUN、CMD、ENTRYPOINT、COPY和ADD设置工作目录
CMD    运行容器时默认执行,如果有多个CMD指令,最后一个生效
ENTRYPOINT    如果与CMD一起用,CMD将作为ENTRYPOINT的默认参数,如果如果有多个ENTRYPOINT指令,最后一个生效

另外CMD是替换,ENTRYPOINT是追加,比如在制作镜像的时候,写了CMD **命令,在docker run 镜像后,如果在后面追加参数,则追加的参数会直接替换dockerfile文件里的命令,如果是ENTRYPOINT的话,则会追加为命令执行脚本

DockerFile里:

CMD  ["-ls","-a"];

docker run centos则是直接执行  -ls -a

CMD:docker run centos -l 直接将-l替换文件里的脚本   ----->变为直接执行 -l

ENTRYPOINT:docker run centos -l 直接将-l追加到文件里的脚本后  ------>变为直接执行-ls -a -l

Docker网络

在这里插入图片描述

容器互联 :

  • --link

就可以实现容器互联,原理就是在执行--link时就在host文件中增加映射关系地址

如:127.0.0.1  localhost

  • 自定义网络

网络模式有:

bridge:桥接模式 此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。

none:不配置网络   该模式关闭了容器的网络功能。

host:和宿主机共享网络  容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。

container:容器网络连通   创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。

执行run容器时候默认--net  bridge

创建自己的网络

docker network create --driver bridge --subnet 192.168.0.0/24 --getway 192.168.0.1 mynet

优点:自定义网络已经帮我们维护了对应的关系,使容器之间可以互相通信,而不像--link那样需要添加host映射关系

网络连通:容器和网络连通,连通之后就是将容器放到了自定义网络下(这样容器就有了两个ip)

docker network connect 自定义网络 容器名

通过docker运行nginx

dock run --name myNginx --rm -p 80:80 nginx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值