Docker从0到1

一. 安装Docker

cat /etc/redhat-release       //查看内核linux版本
CentOS Linux release 7.4.1708 (Core) 

systemctl stop firewalld   //关闭防火墙

systemctl disable  firewalld  //关闭防火墙开机自启
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

CentOS安装Docker步骤如下:

# 添加YUM源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

# 安装Docker CE最新版

yum install docker-ce -y

# 启动Docker服务并设置开机启动

systemctl start docker

systemctl enable docker

二.配置加速器

Docker Hub是由Docker公司负责维护的公共镜像仓库,包含大量的容器镜像,Docker默认从这个公共镜像库下载镜像。

网站地址:https://hub.docker.com

但该网站服务器在国外,国内下载镜像会比较慢,因此可以配置加速器(这里是阿里云的)进行提速,配置如下:

~]# vi /etc/docker/daemon.json

{

"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]

}

~]# systemctl restart docker

我的加速器地址:

 进入阿里云-控制台-搜索容器镜像服务-点击进入镜像工具→镜像加速器能看到加速器地址,点击复制备用

https://l46jfbpz.mirror.aliyuncs.com

docker info 查看配置是否成功

三 .Docker镜像管理命令

示例:

# 查看本地镜像

docker image ls

# 删除本地镜像

docker image rm <镜像名称或ID>     docker rmi -f 强制

# 导出本地镜像到归档文件

docker image save <镜像名称或ID> -o img.tar

# 导入归档文件到本地

docker image load -i img.tar

docker image    inspect  镜像名  //查看镜像具体配置详情

docker pull 拉取镜像

四.容器管理

命令格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

-i, –interactive 交互式

-t, –tty 分配一个伪终端

-d, –detach 运行容器到后台

-e, –env 设置环境变量

-p, –publish list 发布容器端口到主机

--name string 指定容器名称

-h, –hostname 设置容器主机名

--ip string 指定容器IP,只能用于自定义网络

--network 连接容器到一个网络

-v, –volume list --mount

mount(新方式) 将文件系统附加到容器

--restart string 容器退出时重启策略,默认no,可选值:[always|on-failure]

# 创建容器并设置自启动

docker run -d --name=web -p 88:80 --restart=always nginx:1.22

命令格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

-m,–memory 容器可以使用的最大内存量

--cpus 可以使用的CPU数量

–cpuset-cpus 限制容器使用特定的CPU核心,如(0-3, 0,1)

docker run -it centos /bin/bash 后面的 bin/bash的作用

后面的/bin/bash的作用是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself,这个/bin/bash就表示启动容器后启动bash

容器管理命令

命令格式:docker container COMMAND

ps/ls 列出容器

inspect 查看一个或多个容器详细信息

exec 在运行容器中执行命令

cp 拷贝文件/文件夹到一个容器

logs 获取一个容器日志

stats 显示容器资源使用统计

stop/start/restart 停止/启动一个或多个容器

rm 删除一个或多个容器

# 列出所有容器(包括已停止的)

docker container ps -a

# 查看容器日志

docker container logs <容器名称或ID>

# 查看容器资源使用

docker container stats <容器名称或ID>

容器规则一个容器运行一个​​​​​​​服务

容器是临时性的

容器被频繁重建 

五.容器数据持久化

# 创建数据卷

~]# docker volume create nginx-vol 

~]# docker volume ls 

~]# docker volume inspect nginx-vol

# 使用数据卷

~]# docker run -d \ 

--name=nginx-test \ 

--mount src=nginx-vol,dst=/usr/share/nginx/html \

nginx

~]# docker run -d \ 

--name=nginx-test \ 

-v nginx-vol:/usr/share/nginx/html \

nginx

RUN --mount=[type=<TYPE>][,option=<value>[,option=<value>]...]
        这里--mount挂载的类型一共有五种:

bind(default)    用于挂载一个上下文目录
cache    主要用于挂载一个临时目录来缓存编译器和包管理器的目录。
tmpfs    主要用于挂载一个tmpfs
secret    允许构建容器访问诸如私钥之类的安全文件,并且此类文件不会出现在构建好的镜像中,避免密钥外泄。
ssh    允许构建容器通过SSH代理访问SSH密钥,并支持密码短语


本篇介绍第一种挂载方式  --mount=type=bind


        在官方文档中,对bind类型挂载的释义是 "这种挂载类型允许将上下文或镜像中的目录(只读)绑定到正在构建容器" 。这里有三个需要注意的点:

由于RUN指令是容器构建阶段生效运行,所以挂载的目录也仅仅在构建阶段可以访问。
由于不同的RUN指令会创建新的层,所以只有同一个RUN指令中,才可以访问挂载的目录。  
仅支持挂载上下文或者引用的镜像中存在的目录,不能挂载宿主机上的目录,或者上下文以及镜像中不存在的目录(就算挂载上也没有任何意义)。
举个栗子:
先创建一个基础镜像basebind,并在/base下新建一个baseinfo.txt文档
 basebind:dockerfile

FROM alpine
WORKDIR /base
RUN echo 'this is base image,got it!' >> baseinfo.txt
我们在创建另一个镜像baseref的时候,将basebind镜像中的/base目录挂载到当前镜像的/ref目录
 baseref:dockerfile

FROM alpine
WORKDIR /ref
# 将镜像bindbase中的/base目录挂载到/ref,并将挂载过来的文件复制到根目录中,重命名为refinfo.txt
RUN --mount=type=bind,target=/ref,from=bindbase,source=/base \
    cp baseinfo.txt /refinfo.txt
我们运行bindref镜像后,可以看到在我们成功的将挂载过来的文件复制到了容器根目录中
docker run -it bindref
/ref # ls
/ref # cd /
/ # ls
bin          home         mnt          ref          run          sys          var
dev          lib          opt          refinfo.txt  sbin         tmp
etc          media        proc         root         srv          usr
/ # cat refinfo.txt
this is base image,got it

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值