zoukankan      html  css  js  c++  java
  • docker容器和镜像操作

    基于本地模板导入镜像

    假如本地有一个ubuntu系统模板压缩包, 可以通过import导入生成新的镜像

    cat ubuntu-18.04.tar.gz | docker import - ubuntu:18.04

    存出和导入镜像 

    存出镜像

    docker save -o ubuntu-18.04.tar  ubuntu:18.04

    导入镜像

    docker load -i ubuntu-18.04.tar

    导出容器 

    docker export -o ce.tar ce5

    导入容器

    docker import ce.tar - ce:v1.0

    查看容器内进程

    docker top 容器id  

    docker私有仓库

    先拉取registry镜像

    docker pull registry

    根据registry启动镜像,构造仓库

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

    然后我们查看本地有哪些镜像,随便选择一个推送上去 

    docker images

    选择一个mongo,我们打个tag,tag前面要写上我们服务器地址和仓库端口号 

    docker tag mymongo:latest 81.68.86.146:5000/mymongo

    推送到私有仓库 

    docker push 81.68.86.146:5000/mymongo

    如果出现了http错误,请修改/etc/docker/daemon.json文件

    "insecure-registries": ["81.68.86.146:5000"]

    然后重启docker服务

    sudo systemctl daemon-reload
    sudo systemctl restart docker.service
    sudo systemctl enable docker.service

    重启docker 

    docker restart $(docker ps -aq)

    这样再次push就可以将镜像push到docker私有仓库了。

    利用容器卷备份和迁移数据

    1 备份,可以将数据备份至挂在目录,这样外界就可以访问并获取了。
    用ubuntu镜像启动一个新的容器worker,该容器和dbdata容器共享卷, worker启动后将/dbdata下的数据打包放在/backup下

    docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata

    2 还原
    启动一个容器,挂在/dbdata目录

    docker run -v /dbdata  --name  dbdata2 ubuntu /bin/bash

    再用ubuntu 启动一个新的镜像,共享dbdata2容器的卷

    docker run --volume-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar 

    docker 设置ssh

    1 拉取ubuntu镜像

    docker pull ubuntu:18.04

    2 启动ubuntu容器,将22端口映射为1022端口 

    docker run -it  -p 1022:22  ubuntu:18.04

    3 在容器中安装如下应用 

    apt-get update
    apt-get upgrade
    apt-get install vim
    apt-get install openssh-server
    apt-get install net-tools

    然后vim /etc/ssh/sshd_config 

    将PermitRootLogin设置为yes
    创建文件夹

    mkdir -p /var/run/sshd

    然后启动服务 

    /usr/sbin/sshd -D &

    这时我们查看网路端口 

    netstat -tunpl

    可以看到22端口启动了 

    为了让容器启动时可以自启动ssh服务,我们实现一个脚本
    vim /run.sh添加如下

    #!/bin/bash
    /usr/sbin/sshd -D

    然后赋予这个脚本执行权限 

    chmod +x /run.sh

    然后exit退出,基于改造的docker提交新的镜像 

    docker commit cafd85cb0645 ubuntu:ssh

    然后我们基于这个镜像启动新的容器 

    docker run  -d  --name ubuntu-ssh -p 1022:22 ca1a463f5c99 /run.sh

    因为ssh登录需要账户名和密码,账户名为root,密码我们进入容器设置下 

    docker exec -it 28afa8e39353 /bin/bash
    passwd

    安装后输入passwd,设置密码. 

    之后通过ssh连接就可以了

    ssh root@172.98.23.45 -p 1022  

    感谢关注公众号

  • 相关阅读:
    IDEA快捷键:查询快捷键
    IDEA快捷键:自动代码(get、set、构造方法、try...catch、if....else、重写方法、实现方法、大小写转换、格式化、方法参数提示、方法的声明)
    查找(顺序查找、折半查找、分块查找)
    Springboot:整合Mybatis
    required a bean of type 'com.zhb.dao.StudentDao' that could not be found.
    Springboot:整合Druid
    Springboot:整合JDBC
    springboot、Thymeleaf、国际化的简单使用
    Exception evaluating SpringEL expression
    java8:四大核心函数式接口(消费型、供给型、函数型、断言型)
  • 原文地址:https://www.cnblogs.com/secondtonone1/p/13953411.html
Copyright © 2011-2022 走看看