• docker的使用二


    一、容器操作补充

    创建一个容器执行的第一条命令是/bin/bash,如:

    docker create -it --name=mycentos1 centos:7 /bin/bash
    #容器在创建后,当运行时执行的第一行命令/bin/bash命令,bash可以让Linux系统夯在那里,所以我们执行docker start 容器id/容器名字 后容器便一直在后台运行,如果我们把这个命令改成别的则容器启动后执行完后面的命令就自动停止了
    -i:表示运行容器
    -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建后就登录进去。即分配一个伪终端。
    --name :为创建的容器命名。
    -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
    
    
    -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
    -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
    

    容器运行

    docker start 容器id/容器名字
    

    创建并运行

    docker run -di --name=容器名字  镜像:版本号 #后台运行
    docker run -di --name=mypython  python:3.6
    docker run -idt --name=容器名字  镜像:版本号
    docker run -idt --name=mypython  python:3.6 #前台运行
    python的-t命令可以进入python相当于:/bin/bash
    

    进入容器

    
    docker exec -it 容器id 容器内命令
    docker exec 85768eb78045 ps -a #在容器上执行ps -a,执行完就退回到宿主机
    # 方式一
    docker exec -it 容器id /bin/bash #当进入到容器后执行/bin/bash就会夯住容器内的Linux系统,也就进入了容器
    
    # 进入Python容器
    docker exec -it 容器ID python
    #当然如果进入python mysql等容器也可以先执行docker exec -it 容器id /bin/bash,然后再执行python、mysql等
    
    #方式二
    #attach:进入容器,连到第一个进程上
    docker attach 容器ID
    
    #方式三
    # ssh连接,需要在容器上安装ssh服务
    

    删除容器

    docker rm 容器ID/容器名字
    

    总结

    docker run:创建并运行         
    docker exec:容器执行命令(通常用来:进入容器) docker exec -it 容器id/容器名字 /bin/bash
    

    文件拷贝

    # 从宿主机copy文件到容器
    docker cp 1.txt centos7:/home  # 把当前路径下的1.txt拷贝到容器的/home
    
    # 从容器copy文件到宿主机
    docker cp centos7:/home/1.txt 1.txt  # 把容器home路径下的1.txt拷贝到当前路径下
    

    二、网络和数据卷

    将宿主机目录映射到容器

    docker run -di --name=mycentos -v /root/test:/home centos:7#宿主机test文件夹映射到容器内部(可以映射多个)
    

    端口映射

    docker run -di --name=myredis -p 6378:6379 redis#将宿主机的6378映射到容器的6379端口(可以映射多个)
    

    查看容器信息

    docker inspect 容器名称(容器ID) #docker inspect 容器名称查看容器的详细信息
    docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql#查看容器mysql的ID
    

    三、备份迁移

    将容器保存为镜像

    #docker commit 容器名字 镜像名字
    docker commit centos7 my_image_centos7
    

    将镜像打包为压缩文件

    #把my_image_centos7镜像压缩到centos_my.tar中
    docker  save -o centos_my.tar my_image_centos7
    

    将压缩文件恢复成镜像

    docker load -i centos_my.tar
    

    四、dockerfile

    Dockerfile是由一系列命令和参数构成的脚本,这些命令基于基础镜像并最终创建一个新的镜像。dockerfile类似于项目中的requirements里面是我们构建的镜像所需要的依赖的安装命令等内容,当我们构建完成dockerfile文件后只需将该文件移植到另一台docker上运行就可以生成一个我们需要的镜像。

    # 我们需要创建一个文件名为Dockerfile的文件
    # 文件文件名必须叫 Dockerfile
    
    FROM python:3.6     #基于python:3.6这个镜像进行构建
    MAINTAINER abc      #在新的镜像里创建一个名字为abc的文件夹
    RUN pip install django==1.11.9  -i https://pypi.doubanio.com/simple#将源换成豆瓣源然后安装Django
    RUN mkdir /home/abc #在abc这个文件夹下运行
    
    WORKDIR /home      #将工作文件夹设置为/home
    

    执行下面的命令开始构建镜像

    docker build -t='django_img' .   # 构建出django_img 镜像
    

    五、创建私有仓库

    我们可以创建一个私有的仓库用于存放我们的私有镜像,私有仓库本质就是一个web项目linux+registry(用其他语言写的一个web服务),具体创建步骤如下:

    # 1 docker pull registry   拉取registry镜像
    # 2 docker run -di --name=registry -p 5000:5000 registry  运行容器
    # 3 浏览器访问:http://175.24.103.108:5000/v2/_catalog  返回空
    #修改daemon.json
    
    vi /etc/docker/daemon.json
    
    "insecure-registries":["175.24.103.108:5000"]
      
    # 4 重启docker 服务(所有容器都是停止状态)
    systemctl restart docker
    
    # 5 启动registry容器
    docker start registry
    
    # 6 标记镜像
    docker tag django_img 175.24.103.108:5000/django_img
    
    # 7 上传镜像(私有仓库)
    docker push 175.24.103.108:5000/django_img
      
    #8  再从浏览器访问http://175.24.103.108:5000/v2/_catalog
    能看到刚刚上传的镜像
    
    # 以后只要同时配置了daemon.json,再拉取镜像,优先从私有仓库拉,没有在去国外
    
  • 相关阅读:
    你的代码又导致资金损失了?活该!
    rabbitmq实现指定消费者才能消费
    没有绝对,没有百分百
    jenkins构建触发器之Build whenever a snapshot dependency is built
    豁然明白的囧事 之 执行mvn:clean deploy提示401 Unauthorized
    (8/8)RPC方法的参数,能用枚举就请考虑枚举
    abstract 关键字
    练习题------代码块
    代码块
    static 关键字
  • 原文地址:https://www.cnblogs.com/ghylpb/p/12609405.html
Copyright © 2020-2023  润新知