我的Docker学习

Docker官方文档

我的Docker学习

Registry:仓库,存放镜像

Images:Docker 镜像

Containers:Docker容器 ,可运行镜像实例

Docker daemon:Docker守护进程,跟客户端建立通信

Docker_Host:Docker主机,运行Docker的宿主机

Client:客户端对Docker进行管理

卸载Docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

Centos安装Docker

sudo yum install -y yum-utils

设置Docker仓库地址

$ sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker

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

启动

systemctl start docker
docker version #查看docker版本
docker info    #查看docker详细信息

Docker 命令大全 | 菜鸟教程 (runoob.com)

Docker 镜像加速

阿里云镜像加速地址https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 登录进行配置

阿里云镜像仓库

容器镜像服务 (aliyun.com) 登录网站 ——> 创建镜像 ——>点击镜像——>查看操作指南

IDEA 构建Docker 镜像

  1. 修改Docker 服务配置

    vim /usr/lib/systemd/system/docker.service
    

    在ExecStart变量末尾添加

-H unix:///var/run/docker.sock -H 0.0.0.0:2375


```shell


   # exists and systemd currently does not support the cgroup feature set required

# for containers run by docker

   ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H unix:///var/run/docker.sock -H 0.0.0.0:2375 
   ExecReload=/bin/kill -s HUP $MAINPID
   TimeoutSec=0
   RestartSec=2
   Restart=always
  1. 重启Docker服务

    
    
    systemctl daemon-reload 
    systemctl restart docker
    
  2. 添加docker打包插件并配置

    <!--docker 打包插件-->
    <plugin>
      <groupId>com.spotify</groupId>
      <artifactId>docker-maven-plugin</artifactId>
      <version>1.2.2</version>
      <configuration>
          <imageName>demo:3.0</imageName><!--镜像名车-->
          <baseImage>openjdk:8</baseImage><!--指定基础镜像-->
          <dockerHost>http://192.168.190.128:2375</dockerHost><!--指定Docker仓库地址-->
          <!--启动容器执行命令-->
          <entryPoint>["java","-jar","${project.build.finalName}.jar"]</entryPoint>
          <exposes>8761</exposes> <!--镜像对外提供端口-->
          <resources>
              <resource>
                  <!-- 指定要复制的目录路径,这里是当前目录 -->
                  <targetPath>/</targetPath>
    
                  <!-- 指定要复制的根目录,这里是target目录 -->
                  <directory>${project.build.directory}</directory>
    
                  <!-- 指定需要拷贝的文件,这里指最后生成的jar包 -->
                  <include>${project.build.finalName}.jar</include>
              </resource>
          </resources>
      </configuration>
    </plugin>
    

我的Docker学习

我的Docker学习

我的Docker学习

部署镜像仓库私服

下载registry镜像

docker pull registry

配置镜像仓库私服地址

vim /usr/lib/systemd/system/docker.service

在ExecStart变量末尾添加

--insecure-registry 192.168.137.128:5000
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H unix:///var/run/docker.sock -H 0.0.0.0:2375 --insecure-registry 192.168.190.128:5000
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

Docker Daemon添加配置

vim /etc/docker/daemon.json
{
    "insecure-registries":["192.168.190.128:5000"]
}

重启Docker

systemctl daemon-reload
systemctl restart docker

创建Docker容器并运行

maker /opt/registry
docker run -p 5000:5000 -v /opt/registry:/var/lib/registry --name registry -d registry

访问地址http://192.168.190.128:5000/v2 响应{} 代表镜像仓库私服配置成功

推送

docker tag [ImageId] 192.168.190.128:5000:[镜像版本号] 
docker push [ImageId] 192.168.190.128:5000:[镜像版本号]

拉取

docker pull 192.168.190.128:5000:[镜像版本号]

Docker数据卷

创建数据卷

mkder /opt/datas #创建映射共享目录
docker create --name datas -v /opt/datas:/var/datas demo:3.0
docker create --name datas -v /var/datas eurekaservice:1.0 # 创建数据卷容器

创建容器运行并绑定数据卷

docker run -d  --name test1 --volumes-from datas  -p 8001:8761 eurekaservice:1.0 
docker run -d  --name test2 --volumes-from datas  -p 8002:8761 eurekaservice:1.0 

进入容器查看有没有var/datas 目录

docker exec -it test1 bash
docker exec -it test2 bash

在test1容器/var/datas/ 目录下创建 a.txt并写入文本

touch a.txt
echo "adfafasdf" >> /var/datas/a.txt 

在test2容器中查看/var/datas/

root@8703ce4d3850:/# ls var/datas/
a.txt
root@8703ce4d3850:/# cat /var/datas/a.txt 
adfafasdf

数据备份

​ 打包

docker run --rm -d --name tmp --volumes-from datas -v /opt/datas/:/tmp/datas mysql:5.7 tar -cf /tmp/datas/backup.tar.gz /var/datas 
[root@bogon opt]# ls datas/
backup.tar.gz

数据还原

# 删除数据数据卷
docker exec  -it test1  bash
rm -rf /var/datas/a.txt
# 数据解压缩到数据卷
docker run -d --rm --volumes-from datas --name tmp  -v /opt/datas/:/tmp/datas mysql:5.7 tar -xf /tmp/datas/backup.tar.gz -C /

# 查看内容
docker exec -it test1  bash

cat  /var/datas/a.txt 
adfafasdf
ddd

Docker容器生命周期(面试)

backup.tar.gz




数据还原

```shell
# 删除数据数据卷
docker exec  -it test1  bash
rm -rf /var/datas/a.txt
# 数据解压缩到数据卷
docker run -d --rm --volumes-from datas --name tmp  -v /opt/datas/:/tmp/datas mysql:5.7 tar -xf /tmp/datas/backup.tar.gz -C /

# 查看内容
docker exec -it test1  bash

cat  /var/datas/a.txt 
adfafasdf
ddd

Docker容器生命周期(面试)

我的Docker学习

上一篇:接上文(调整加载逻辑):Tensorflow2.3加载文本数据转为train_data,val_data,test_data,


下一篇:python批量处理excel