zoukankan      html  css  js  c++  java
  • Docker-----常用命令

    安装docker

    1、安装docker
    yum install docker
    查一下安装版本
    docker --version

    2、启动docker
    selinux需要关闭
    systemctl enable docker.service
    systemctl start docker.service

    添加国内镜像库

       vi /etc/docker/daemon.json
    {
      "registry-mirrors": ["https://registry.docker-cn.com"]
    }
    需要重启docker生效

    列出容器上的镜像

    docker images
    其中我们可以根据REPOSITORY来判断这个镜像是来自哪个服务器

    如果没有 / 则表示官方镜像,类似于username/repos_name表示Github的个人公共库,类似于regsistory.example.com:5000/repos_name则表示的是私服。

    IMAGE ID列其实是缩写,要显示完整则带上--no-trunc选项

    搜索镜像

    docker search nginx
    搜索的范围是官方镜像和所有个人公共镜像。NAME列的 / 后面是仓库的名字。

    下载镜像

    docker pull nginx

    删除镜像

    docker rmi image-id
    需要先删除应用这个镜像的docker

    生成容器

    交互式
    docker -ti run --restart=always --name nginx1 -d -p 6378:80 -v /tmp/nginx:/tmp/:ro nginx

    --name 运行一个名字为nginx1的容器
    nginx  使用nginx镜像
    -p  将Docker中的nginx的80端口映射到本机的6378端口。
    -d 后台执行
    --restart=always 自动重启容器
    -t:进入终端
    -i:获得一个交互式的连接,通过获取container的输入
    

    -v 将主机上的目录挂载到容器的目录
    #不指定的时候默认是rw模式,可以用docker inspect查看容器的属性,可以看到关于挂载目录的详细参数。

    1. 默认情况不使用:rw :ro选项,Mode的值就是空字符串,但是rw是true“。
    2. 使用:rw选项,Mode的值就是”rw”。
    3. 使用:ro选项,Mode的值就是”ro”。

    rw:宿主主机和docker互相都可以读写同步,都可以写,都可以互相同步。
    ro:这个时候docker内不能写,宿主主机写了可以同步到容器内。

    启动/关闭容器

    docker stop container-name/container-id
    通过容器名称或者容器id启动/停止容器

    查看容器状态

    docker ps -a  #显示所有容器,包括不运行的

    docker ps #显示运行中的容器

    docker info #查看容器和镜像的数量、以及docker的基本信息等资料

    删除容器

    docker rm container-name/container-id
    只能删除已经不是up状态的docker

    进入某个容器

    使用container命令,当退出container后,container仍然在后台运行,命令使用方法如下:
    docker exec -it goofy_almeida /bin/bash  
    退出容器可以用crtl+D或者exit命令退出
    平常的容器一般都可以执行/bin/bash,很是alpine没有,改成 docker exec -it 镜像id sh 就好了。
    -u root #进入容器的用户
    

    docker运行日志

    journalctl -u docker.service  #可以加-f实时查看日志

    docker logs 容器名  #查看容器运行日志,也可以加参数-t 带上时间戳

    查看容器内进程

    docker top 容器名

    镜像备份恢复

    Docker的镜像和容器可以有两种方式来导出

    docker save #ID or #Name
    docker export #ID or #Name
    

    docker save和docker export的区别:

    对于Docker Save方法,会保存该镜像的所有历史记录
    对于Docker Export 方法,不会保留历史记录,即没有commit历史
    docker save保存的是镜像(image),docker export保存的是容器(container);
    docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
    docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。
    

    save命令:

    docker save [options] images [images...]
    
    示例 
    docker save -o nginx.tar nginx:latest 
    或 
    docker save > nginx.tar nginx:latest 
    其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是源镜像名(name:tag)
    

    load命令:

    docker load [options]
    
    示例
    docker load -i nginx.tar
    或
    docker load < nginx.tar
    其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息
    

    export命令:

    docker export [options] container
    
    示例
    docker export -o nginx-test.tar nginx-test
    #导出为tar
    docker export #ID or #Name > /home/export.tar
    其中-o表示输出到文件,nginx-test.tar为目标文件,nginx-test是源容器名(name)
    

     import命令:

    docker import [options] file|URL|- [REPOSITORY[:TAG]]
    
    示例
    docker import nginx-test.tar nginx:imp
    或
    cat nginx-test.tar | docker import - nginx:imp
    

    文件拷贝

    ocker cp :用于容器与主机之间的数据拷贝。

    将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。
    docker cp /www/runoob 96f7f14e99ab:/www/
    
    将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。
    docker cp /www/runoob 96f7f14e99ab:/www
    
    将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。
    docker cp  96f7f14e99ab:/www /tmp/
    

    在容器内运行命令

    docker exec -d registry touch /123.txt

    docker exec命令可以在容器内部额外的启动新进程,-d后面要加容器名以及要执行的命令

    volume使用

    docker volume --help
    
    Commands:
      create      创建一个数据卷
      inspect     打印一个或多个数据卷的详细信息
      ls          列出所有数据卷
      prune       删除所有未使用的数据卷
      rm          删除一个或多个数据卷
    

    创建一个volume

    docker volume create www-data
    

    查看数据卷在宿主机上的路径:

    [root@node1 volumes]# docker inspect www-data
    [
        {
            "Driver": "local",
            "Labels": {},
            "Mountpoint": "/var/lib/docker/volumes/www-data/_data",
            "Name": "www-data",
            "Options": {},
            "Scope": "local"
        }
    ]
    [root@nod
    

     注:每创建一个volume,docker会在/var/lib/docker/volumes/下创建一个子目录,默认情况下目录名是一串UUID。如果指定了名称,则目录名是volume名称。volume里的数据都存储在这个子目录的_data目录下。

    把卷挂载到容器

    docker run --rm --name web -p 80:80 -v www-data:/usr/share/nginx/html:ro -d nginx
    

    privileged参数

    --privileged=false 
    

    container内的root拥有真正的root权限。
    否则,container内的root只是外部的一个普通用户权限。
    privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
    甚至允许你在docker容器中启动docker容器。

  • 相关阅读:
    洛谷 P2580 于是他错误的点名开始了(Trie)
    AcWing 142. 前缀统计(Trie)
    Codeforces Round #646 (Div. 2) E. Tree Shuffling(贪心/树形DP)
    Django form表单|form组件常用字段、校验
    AJAX | json、上传文件、SweetAlert插件
    Django中间件
    Django的Cookie、Session和自定义分页
    Django的ORM操作-FQ-事物
    django-模板引擎进阶
    django-视图函数进阶
  • 原文地址:https://www.cnblogs.com/jinyuanliu/p/10670382.html
Copyright © 2011-2022 走看看