0
点赞
收藏
分享

微信扫一扫

1、Docker基础快速入门

诗远 2022-04-26 阅读 40
docker

第一章 什么是docker

  1. Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的linux或者windows操作系统的机器上,也可以实现虚化。容器是完全使用啥沙箱机制,相互之间不会有任何接口。
  2. 一个完整的docker有以下几个部分组成:
    1、客户端。
    2、守护进程。
    3、镜像。
    4、容器。
  3. docker 应用场景
    1、web应用自动化打包发布。
    2、自动化测试和持续集成、发布。
    3、在服务型环境中部署和调整数据库或其他的后台应用。
    4、从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
  4. docker 为什么流行

    虚拟化技术特点:1.资源占用多 2.冗余步骤多 3.启动很慢
    容器化技术:容器化技术不是模拟的一个完整的操作系统
    比较Docker和虚拟机的不同:
    1.传统虚拟机,虚拟出硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件。
    2.Docker容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟硬件。
    3.每个容器都是相互隔离的,每个容器都有属于自己的文件系统,互不影响。

 第二章 docker架构

  架构说明

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。

Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。

Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。

Docker daemon(守护进程)

Docker 守护进程 (dockerd) 监听 Docker API 请求并管理 Docker 对象,例如镜像、容器、网络和卷。 守护进程还可以与其他守护进程通信以管理 Docker 服务。

 第三章  Docker安装 

  1. 环境准备
    要安装Docker Engine,您需要CentOS 7或8的维护版本,我是买的阿里云服务器。
  2. 具体步骤
    # 1、卸载旧版本 
    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
    # 2、需要的安装包
     sudo yum install -y yum-utils
    # 3、用阿里云国内镜像地址 下载
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
                    
    # 4、安装最新版本的docker
    sudo yum install docker-ce docker-ce-cli containerd.io

    注意:
    1、因为我是阿里云服务器,一开始用的内核都是centos8.2的,导致我在用以上命令安装docker报各种错误,后面索性降版本,切换到centos7.9后,才顺利安装。

    1. docker配置阿里云镜像加速器。
      docker 拉取镜像到时到官网地址,因为是国外的,所以很慢,配置阿里镜像,这样都是通过阿里镜像获取镜像。
      1、登陆阿里与服务器,找到容器服务

       
      2、复制然后在终端执行即可。

       至此,docker安装完毕。

  3. 运行第一个hello_world镜像
    执行下面命令,docker 就会从远程仓库拉取 hello-world 镜像,并启动。

    sudo docker run hello-world

第四章 docker原理

1、docker run启动流程

 2、底层原理

Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socker从客户端访问!Docker Server接收到Docker-Client的指令,就会执行这个指令!

Docker为什么比VM Ware快?

1、Docker比虚拟机更少的抽象层

2、docker利用宿主机的内核,VM需要的是Guest OS

3、Docker新建一个容器的时候,不需要像虚拟机一样重新加载一个操作系统内核,直接利用宿主机的操作系统,而虚拟机是需要加载Guest OS。

 第五章 docker常用命令

1、帮助命令

docker version          #查看docker的版本信息
docker info             #查看docker的系统信息,包括镜像和容器的数量
docker 命令 --help       #帮助命令(可查看可选的参数)
docker COMMAND --help

 命令的帮助文档地址:https://docs.docker.com/engine/reference/commandline/docker/

2、镜像命令

docker images 查看所有本地主机上的镜像

[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   7 months ago   13.3kB
[root@iZbp1dlz0y8paqewduhmx6Z ~]# 

#解释
1.REPOSITORY  镜像的仓库源
2.TAG  镜像的标签
3.IMAGE ID 镜像的id
4.CREATED 镜像的创建时间
5.SIZE 镜像的大小
# 可选参数
-a/--all 列出所有镜像
-q/--quiet 只显示镜像的id

docker images -a

[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker images -a
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    feb5d9fea6a5   7 months ago   13.3kB

docker images -q   经常用

[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker images -q
feb5d9fea6a5
[root@iZbp1dlz0y8paqewduhmx6Z ~]# 

 docker imaes -aq   显示所有镜像的Id

[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker images -aq
feb5d9fea6a5

3、搜索命令

docker search  镜像名称

[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker search redis
NAME                                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
redis                                              Redis is an open source key-value store that…   10846     [OK]       
bitnami/redis                                      Bitnami Redis Docker Image                      214                  [OK]
rediscommander/redis-commander                     Alpine image for redis-commander - Redis man…   77                   [OK]
redislabs/redisearch                               Redis With the RedisSearch module pre-loaded…   51                   
redislabs/redisinsight                             RedisInsight - The GUI for Redis                45                   
bitnami/redis-sentinel                             Bitnami Docker Image for Redis Sentinel         36                   [OK]
redislabs/redis                                    Clustered in-memory database engine compatib…   32                   
bitnami/redis-cluster                                                                              30                   
redislabs/rebloom                                  A probablistic datatypes module for Redis       19                   [OK]
circleci/redis                                     CircleCI images for Redis                       12                   [OK]

docker search  镜像名称 --filter=过滤字段=?(条件查询镜像)

#查询出redis 星星大于6000的镜像
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker search redis --filter=STARS=6000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
redis     Redis is an open source key-value store that…   10846     [OK]     

 docker pull  镜像名称  (下载镜像,如果不加版本,默认是最新版本)

[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker pull redis
Using default tag: latest                    #如果不写tag默认就是latest
latest: Pulling from library/redis
a2abf6c4d29d: Pull complete                  #分层下载,docker image的核心-联合文件系统
c7a4e4382001: Pull complete 
4044b9ba67c9: Pull complete 
c8388a79482f: Pull complete 
413c8bb60be2: Pull complete 
1abfd3011519: Pull complete 
Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest  #下载来源的真实地址  

docker pull 镜像:版本 (指定镜像版本下载)版本一定要在官网是存在的

[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
72a69066d2fe: Pull complete 
93619dbc5b36: Pull complete 
99da31dd6142: Pull complete 
626033c43d70: Pull complete 
37d5d7efb64e: Pull complete 
ac563158d721: Pull complete 
d2ba16033dad: Pull complete 
0ceb82207cd7: Pull complete 
37f2405cae96: Pull complete 
e2482e017e53: Pull complete 
70deed891d42: Pull complete 
Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7
[root@iZbp1dlz0y8paqewduhmx6Z ~]# 

 4、删除镜像

        本机拉取的所有镜像

[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
redis         latest    7614ae9453d1   4 months ago   113MB
mysql         5.7       c20987f18b13   4 months ago   448MB
hello-world   latest    feb5d9fea6a5   7 months ago   13.3kB

 删除镜像可以删除个,多个,批量删除。前提是镜像没有启动

docker rmi  -f 镜像id     

docker rmi  -f 镜像id  镜像id  镜像id

docker rmi -f $(docker images -aq)      #查询出 镜像id当做参数传递

5、容器命令
 

 有了镜像才可以创建容器(linux),拉取一个centos镜像测试学习

docker pull centos

docker run [可选参数] image(镜像名称)  新建容器并启动

docker run [可选参数] image(镜像名称)

#参数说明
--name="名字"           指定容器名字
-d                     后台方式运行  
-it                    使用交互方式运行,进入容器查看内容
-p                     指定容器的端口
(
-p ip:主机端口:容器端口  配置主机端口映射到容器端口
-p 主机端口:容器端口
-p 容器端口
)
-P                     随机指定端口(大写的P)

docker run -d 镜像名  非交互模式后台启动,启动后容器因为找不到前台目录会自动停止。

docker容器后台运行,必须要有一个前台的进程,否则会自动停止。后面会讲。

启动拉取的centos镜像 ,镜像成为容器后注意观察用户名和主机,此时镜像就在一个微型的linux系统中运行了。

# 启动容器  此时的用户名是root 主机是:iZbp1dlz0y8paqewduhmx6Z 
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker run -it centos

# 启动容器后 此时的用户名root 但是主机已经变成了镜像容器的 id 容易已经是一个小型的linux系统了
# 这就是docker 的厉害之处
[root@fe0b3abb75aa /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

exit  退出容器(退出后容器会停止)

exit 退出容器
# 用户名:root  主机:原来的主机了
[root@fe0b3abb75aa /]#  exit
exit
[root@iZbp1dlz0y8paqewduhmx6Z ~]# 

查看容器状态,此时已经是退出状态了,主机也回到真是的主机了

[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED          STATUS                          PORTS     NAMES
fe0b3abb75aa   centos        "/bin/bash"   34 minutes ago   Exited (0) About a minute ago             serene_pasteur
e1d388f042c6   hello-world   "/hello"      23 hours ago     Exited (0) 23 hours ago                   zealous_torvalds

docker ps  列出所有的正在运行的容器

 #docker ps 
     # 列出当前正在运行的容器
-a   # 列出所有容器的运行记录
-n=? # 显示最近创建的n个容器
-q   # 只显示容器的编号
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED          STATUS                     PORTS     NAMES
fe0b3abb75aa   centos        "/bin/bash"   40 minutes ago   Exited (0) 7 minutes ago             serene_pasteur
e1d388f042c6   hello-world   "/hello"      23 hours ago     Exited (0) 23 hours ago              zealous_torvalds
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker ps -q
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker ps -n=2
CONTAINER ID   IMAGE         COMMAND       CREATED          STATUS                     PORTS     NAMES
fe0b3abb75aa   centos        "/bin/bash"   41 minutes ago   Exited (0) 8 minutes ago             serene_pasteur
e1d388f042c6   hello-world   "/hello"      23 hours ago     Exited (0) 23 hours ago              zealous_torvalds
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker ps -n=5
CONTAINER ID   IMAGE         COMMAND       CREATED          STATUS                     PORTS     NAMES
fe0b3abb75aa   centos        "/bin/bash"   41 minutes ago   Exited (0) 8 minutes ago             serene_pasteur
e1d388f042c6   hello-world   "/hello"      23 hours ago     Exited (0) 23 hours ago              zealous_torvalds
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker ps -aq
fe0b3abb75aa
e1d388f042c6

Ctrl+P+Q 不停止容器退出

# 退回到父容器,此时centos容器并未停止
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker run -it centos
[root@8ec13f25f940 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@8ec13f25f940 /]# [root@iZbp1dlz0y8paqewduhmx6Z ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS              PORTS     NAMES
8ec13f25f940   centos    "/bin/bash"   About a minute ago   Up About a minute             vibrant_ride
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker ps -q
8ec13f25f940
[root@iZbp1dlz0y8paqewduhmx6Z ~]# 

删除容器

docker rm 容器id                 #删除指定的容器,不能删除正在运行的容器
docker rm -f 容器id              强制删除使用  包括正在运行的容器
docker rm -f $(docker ps -aq)   #删除所有的容器 
docker ps -a -q|xargs docker rm #删除所有的容器

启动和停止容器

docker start 容器id          #启动容器
docker restart 容器id        #重启容器
docker stop 容器id           #停止当前运行的容器
docker kill 容器id           #强制停止当前容器


[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker run -it centos
[root@cdd0305461d6 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@cdd0305461d6 /]# [root@iZbp1dlz0y8paqewduhmx6Z ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
cdd0305461d6   centos    "/bin/bash"   17 seconds ago   Up 15 seconds             objective_bhabha
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker stop cdd0305461d6
cdd0305461d6
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker start cdd0305461d6
cdd0305461d6
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS     NAMES
cdd0305461d6   centos    "/bin/bash"   45 seconds ago   Up 2 seconds             objective_bhabha
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker kill cdd0305461d6
cdd0305461d6
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@iZbp1dlz0y8paqewduhmx6Z ~]# 

6、重要的其他命令

 1、docker logs  参数  容器id  日志查看

常用:
docker logs -tf 容器id
docker logs --tail number 容器id #num为要显示的日志条数

2、docker top 容器id 查看容器中进程信息

[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker top cdd0305461d6
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                15752               15731               0                   20:33               pts/0               00:00:00            /bin/bash
[root@iZbp1dlz0y8paqewduhmx6Z ~]# 

3、docker inspect 容器id  容器元数据


[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker inspect cdd0305461d6
[
    {
        "Id": "cdd0305461d60e33ded48cdfee28c01c759ab7a79c4c929dfd412f5eb12de22d",
        "Created": "2022-04-26T12:18:37.998596957Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 15752,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-04-26T12:33:26.518084593Z",
            "FinishedAt": "2022-04-26T12:19:54.737655588Z"
        },
        "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
        "ResolvConfPath": "/var/lib/docker/containers/cdd0305461d60e33ded48cdfee28c01c759ab7a79c4c929dfd412f5eb12de22d/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/cdd0305461d60e33ded48cdfee28c01c759ab7a79c4c929dfd412f5eb12de22d/hostname",
        "HostsPath": "/var/lib/docker/containers/cdd0305461d60e33ded48cdfee28c01c759ab7a79c4c929dfd412f5eb12de22d/hosts",
        "LogPath": "/var/lib/docker/containers/cdd0305461d60e33ded48cdfee28c01c759ab7a79c4c929dfd412f5eb12de22d/cdd0305461d60e33ded48cdfee28c01c759ab7a79c4c929dfd412f5eb12de22d-json.log",
        "Name": "/objective_bhabha",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/c3d29f1fce165f6be3a9d386daee0d76af7e7128169462a1f18584245b1dfd3f-init/diff:/var/lib/docker/overlay2/87a15704c9f24c13af765e89a00815ab551d99c88aed8a962917d8194f526abe/diff",
                "MergedDir": "/var/lib/docker/overlay2/c3d29f1fce165f6be3a9d386daee0d76af7e7128169462a1f18584245b1dfd3f/merged",
                "UpperDir": "/var/lib/docker/overlay2/c3d29f1fce165f6be3a9d386daee0d76af7e7128169462a1f18584245b1dfd3f/diff",
                "WorkDir": "/var/lib/docker/overlay2/c3d29f1fce165f6be3a9d386daee0d76af7e7128169462a1f18584245b1dfd3f/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "cdd0305461d6",
            "Domainname": "",
            "User": "",
            "AttachStdin": true,
            "AttachStdout": true,
            "AttachStderr": true,
            "Tty": true,
            "OpenStdin": true,
            "StdinOnce": true,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20210915",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "f34cfe4b180e4225781047e5a0447866166303ac2779690ac96f55af3237274f",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/f34cfe4b180e",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "4853b52e8f3d5b00baae9dc08318c4615a5a25eb6dcbe789c0a9a8d70a2efe38",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "4946de46881f8c589bee39d6f231bc3aafee8d5578f0081b7a82da8e1cab77f1",
                    "EndpointID": "4853b52e8f3d5b00baae9dc08318c4615a5a25eb6dcbe789c0a9a8d70a2efe38",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]
[root@iZbp1dlz0y8paqewduhmx6Z ~]# 

4、docker exec -it  容器id /bin/bash 进入当前正在运行的容器

[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker exec -it cdd0305461d6 /bin/bash
[root@cdd0305461d6 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

5、docker attach  容器 id  

[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker attach cdd0305461d6
[root@cdd0305461d6 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

docker exec 进入容器后开启一个新的终端,可以在里面操作

docker attach 进入容器正在执行的终端,不会启动新的进程

6、拷贝文件

#拷贝容器的文件到主机中
docker cp 容器id:容器内路径  目的主机路径

#拷贝宿主机的文件到容器中
docker cp 目的主机路径 容器id:容器内路径

[root@iZbp1dlz0y8paqewduhmx6Z /]# cd root
[root@iZbp1dlz0y8paqewduhmx6Z ~]# ls
[root@iZbp1dlz0y8paqewduhmx6Z ~]# touch copy.txt
[root@iZbp1dlz0y8paqewduhmx6Z ~]# ls
copy.txt
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker cp  /root/copy.txt  cdd0305461d6:root
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker attch cdd0305461d6
[root@cdd0305461d6 /]# cd root
[root@cdd0305461d6 ~]# ls
anaconda-ks.cfg  anaconda-post.log  copy.txt  original-ks.cfg
[root@cdd0305461d6 ~]# touch copy2.doc
[root@iZbp1dlz0y8paqewduhmx6Z ~]# docker cp  cdd0305461d6:root/copy2.doc /root
[root@iZbp1dlz0y8paqewduhmx6Z ~]# ls
copy2.doc  copy.txt
[root@iZbp1dlz0y8paqewduhmx6Z ~]# 

7、命令图解

 通过图示可以看到镜像和容器之间的交互所使用的各种命令。

举报

相关推荐

0 条评论