docker基础用法

OCI&OCF

OCI

Open Container-initiative

  • 由Linux基金会主导于2015年6月创立
  • 旨在围绕容器格式和运行时制定一个开放的工业化标准
  • contains two specifications
    • the Runtime Specification(runtime-spec)
    • the Image Specification(image-spec)

OCF

Open Container Format
runC是一个CLI工具,用于根据OCI规范生成和运行容器

  • 容器作为runC的子进程启动,可以嵌入到各种其他系统中,而无需运行守护进程
  • runC建立在libcontainer之上,同样的容器技术为数百万的Docker Engine安装提供动力

docker架构

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

镜像是静态的,而容器是动态的,容器有其生命周期,镜像与容器的关系类似于程序与进程的关系。镜像类似于文件系统中的程序文件,而容器则类似于将一个程序运行起来的状态,也即进程。所以容器是可以删除的,容器被删除后其镜像是不会被删除的。
在这里插入图片描述

概念说明
Docker 客户端(Client)Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。
Docker 主机(Host)一个物理或者虚拟的机器用于执行 Docker 守护进程和容器
Docker 镜像(Images)Docker 镜像是用于创建 Docker 容器的模板,比如 Centos系统。
Docker RegistryDocker 仓库用来保存镜像,可以理解为代码控制中的代码仓库
一个 Docker Registry 中可以包含多个仓库(Repository)
每个仓库可以包含多个标签(Tag);每个标签对应一个镜像
一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本
通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签

docker对象

当您使用docker时,在创建时会使用镜像、容器、网络、卷、插件和其他对象。

  • 镜像
    • 镜像是一个只读模板,带有创建docker容器的说明
    • 通常,一个镜像基于另一个镜像,带有一些额外的定制
    • 可以创建自己的镜像,也可以只使用他人创建并在注册表中发布的镜像
  • 容器
    • 容器是镜像的可运行实例
    • 您可以使用docker API或CLI创建、运行、停止、移动或删除容器
    • 您可以将容器连接到一个或多个网络,为其附加存储,甚至可以基于其当前状态创建新的映像

安装及使用docker

docker安装

[root@localhost yum.repos.d]# pwd
/etc/yum.repos.d
[root@localhost yum.repos.d]# curl -o docker-ce.repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:  0     0    0     0    0     0      0      0 --:--:--  0:00:  0     0    0     0    0     0      0      0 --:--:--  0:00:100  1919  100  1919    0     0    674      0  0:00:02  0:00:02 --:--:--   674
[root@localhost yum.repos.d]# sed -i 's@https://download.docker.com@https://mirrors.tuna.tsinghua.edu.cn/docker-ce@g' docker-ce.repo

[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum makecache

[root@localhost yum.repos.d]# yum -y install docker-ce

docker加速

docker-ce的配置文件是/etc/docker/daemon.json,此文件默认不存在,需要我们手动创建并进行配置,或者启动docker服务是会自动创建此目录,一般选择开启服务自动创建此方法,而docker的加速就是通过配置此文件来实现的。

docker的加速有多种方式:

  • docker cn
  • 中国科技大学加速器
  • 阿里云加速器(需要通过阿里云开发者平台注册帐号,免费使用个人私有的加速器)

以下举例演示使用阿里云加速器:

//开启服务,目录自动创建
[root@localhost ~]# systemctl enable --now docker
[root@localhost ~]# ls /etc/docker/   
key.json

[root@localhost ~]# tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://wjscumc2.mirror.aliyuncs.com"]
> }
> EOF
{
  "registry-mirrors": ["https://wjscumc2.mirror.aliyuncs.com"]
}

[root@localhost ~]# cat /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://wjscumc2.mirror.aliyuncs.com"]
}

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker

docker常用操作

命令功能
docker search在Docker Hub上搜索图像
docker pullPull an image or a repository from a registry
docker imagesList images
docker createCreate a new conntainer
docker startStart one or more stopped containers
docker stopStop one or more running containers
docker restartRestart a container
docker runRun a command in a new container
docker psList containers
docker logsFetch the logs of a container
docker killKill one or more running containers
docker infoDisplay system-wide information
docker rmRemove onne or more containers
docker execRun a command in a running container
docker attachAttach to a runninng container
docker inspectReturn low-level information on Docker objects
  • docker version
[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.11
 API version:       1.41
 Go version:        go1.16.9
 Git commit:        dea9396
 Built:             Thu Nov 18 00:36:58 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.11
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.9
  Git commit:       847da18
  Built:            Thu Nov 18 00:35:20 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
  • docker info
[root@localhost ~]# docker info 
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.6.3-docker)
  scan: Docker Scan (Docker Inc., v0.9.0)

Server:       //经常查看此处
 Containers: 0       //有多少容器
  Running: 0         //有几个正在运行的容器
  Paused: 0          //有几个暂停的容器
  Stopped: 0         //有几个停止的容器
 Images: 0           //有几个镜像
 Server Version: 20.10.11
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc version: v1.0.2-0-g52b36a2
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.18.0-193.el8.x86_64
 Operating System: CentOS Linux 8 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 1      
 Total Memory: 1.914GiB
 Name: localhost.localdomain
 ID: YNX5:PSG5:7TXE:3SS4:GVH4:VVYR:2JQX:KNGD:IJ24:E5Y6:M4ZT:KAHD
 Docker Root Dir: /var/lib/docker    //工作目录
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://wjscumc2.mirror.aliyuncs.com/     //加速器
 Live Restore Enabled: false
  • docker search
[root@localhost ~]# docker search nginx
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                             Official build of Nginx.                        15899     [OK]       
jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   2098                 [OK]
richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of…   819                  [OK]
jc21/nginx-proxy-manager          Docker container for managing Nginx proxy ho…   285                  
linuxserver/nginx                 An Nginx container, brought to you by LinuxS…   160                  
tiangolo/nginx-rtmp               Docker image with Nginx using the nginx-rtmp…   146                  [OK]
jlesage/nginx-proxy-manager       Docker container for Nginx Proxy Manager        144                  [OK]
alfg/nginx-rtmp                   NGINX, nginx-rtmp-module and FFmpeg from sou…   110                  [OK]
nginxdemos/hello                  NGINX webserver that serves a simple page co…   79                   [OK]
privatebin/nginx-fpm-alpine       PrivateBin running on an Nginx, php-fpm & Al…   60                   [OK]
nginx/nginx-ingress               NGINX and  NGINX Plus Ingress Controllers fo…   57                   
nginxinc/nginx-unprivileged       Unprivileged NGINX Dockerfiles                  54                   
nginxproxy/nginx-proxy            Automated Nginx reverse proxy for docker con…   28                   
staticfloat/nginx-certbot         Opinionated setup for automatic TLS certs lo…   25                   [OK]
nginx/nginx-prometheus-exporter   NGINX Prometheus Exporter for NGINX and NGIN…   22                   
schmunk42/nginx-redirect          A very simple container to redirect HTTP tra…   19                   [OK]
centos/nginx-112-centos7          Platform for running nginx 1.12 or building …   16                   
centos/nginx-18-centos7           Platform for running nginx 1.8 or building n…   13                   
bitwarden/nginx                   The Bitwarden nginx web server acting as a r…   11                   
flashspys/nginx-static            Super Lightweight Nginx Image                   11                   [OK]
mailu/nginx                       Mailu nginx frontend                            9                    [OK]
webdevops/nginx                   Nginx container                                 9                    [OK]
ansibleplaybookbundle/nginx-apb   An APB to deploy NGINX                          3                    [OK]
wodby/nginx                       Generic nginx                                   1                    [OK]
arnau/nginx-gate                  Docker image with Nginx with Lua enabled on …   1                    [OK]
  • docker pull
//拉取一个nginx的镜像,一下演示的是含有版本号的,如果不指定版本号,拉取最新版本
[root@localhost ~]# docker pull nginx:1.20.2
1.20.2: Pulling from library/nginx
eff15d958d66: Pull complete 
1f3e1e3ef6aa: Pull complete 
231009cab23f: Pull complete 
b2ef879f0046: Pull complete 
5495a7eec709: Pull complete 
ddde57a4eac9: Pull complete 
Digest: sha256:6ce65dd1f3bf44fa60a0212f0f893b78a706f20f09c884b43de50037067d9f5d
Status: Downloaded newer image for nginx:1.20.2
docker.io/library/nginx:1.20.2

//如果不指定版本,拉取最新版本
[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
eff15d958d66: Already exists 
1e5351450a59: Pull complete 
2df63e6ce2be: Pull complete 
9171c7ae368c: Pull complete 
020f975acd28: Pull complete 
266f639b35ad: Pull complete 
Digest: sha256:097c3a0913d7e3a5b01b6c685a60c03632fc7a2b50bc8e35bcaa3691d788226e
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

//查看镜像
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        1.20.2    aedf7f31bdab   2 weeks ago   141MB
nginx        latest    ea335eea17ab   2 weeks ago   141MB
  • docker create
//语法格式
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

//创建一个nginx容器,不指定版本号,默认为最新版
[root@localhost ~]# docker create nginx
a590c58c833d4045c48ad325919889123f28968ac255a7b528ef8fed42e3bbf3

//查看是否创建成功
[root@localhost ~]# docker info
......
Server:
 Containers: 1    //刚刚创建的nginx容器
  Running: 0
  Paused: 0
  Stopped: 1      //新创建的容器默认是关闭状态
 Images: 2        //之前拉取的两个镜像

//以上创建容器时镜像本地有,现在创建本地没有镜像的容器

......
  • docker ps
docker ps  //只能查看运行中的容器
docker ps -a  //查看所有的容器

[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]# docker ps -a 
CONTAINER ID   IMAGE     COMMAND                  CREATED                  STATUS    PORTS     NAMES
a590c58c833d   nginx     "/docker-entrypoint.…"   Less than a second ago   Created             gifted_haibt
  • docker start、stop、restart
//查看ID
[root@localhost ~]# docker ps -a 
CONTAINER ID   IMAGE     COMMAND                  CREATED                  STATUS    PORTS     NAMES
a590c58c833d   nginx     "/docker-entrypoint.…"   Less than a second ago   Created             gifted_haibt

//使用ID启动
[root@localhost ~]# docker start a590c58c833d
a590c58c833d
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED                  STATUS         PORTS     NAMES
a590c58c833d   nginx     "/docker-entrypoint.…"   Less than a second ago   Up 6 seconds   80/tcp    gifted_haibt

//重启容器
[root@localhost ~]# docker restart a590c58c833d
a590c58c833d
[root@localhost ~]# docker ps -a 
CONTAINER ID   IMAGE     COMMAND                  CREATED                  STATUS         PORTS     NAMES
a590c58c833d   nginx     "/docker-entrypoint.…"   Less than a second ago   Up 6 seconds   80/tcp    gifted_haibt

//停止容器
[root@localhost ~]# docker stop a590c58c833d
a590c58c833d
[root@localhost ~]# docker ps -a 
CONTAINER ID   IMAGE     COMMAND                  CREATED                  STATUS                     PORTS     NAMES
a590c58c833d   nginx     "/docker-entrypoint.…"   Less than a second ago   Exited (0) 3 seconds ago             gifted_haibt
  • docker kill
kill和stop的区别,kill强制杀死进程,stop正常关闭进程

[root@localhost ~]# docker kill a590c58c833d
a590c58c833d
[root@localhost ~]# docker ps -a 
CONTAINER ID   IMAGE     COMMAND                  CREATED                  STATUS                       PORTS     NAMES
a590c58c833d   nginx     "/docker-entrypoint.…"   Less than a second ago   Exited (137) 2 seconds ago             gifted_haibt
  • docker run
//直接运行一个容器,若本地没有镜像,网上拉取
[root@192 ~]# docker run -it busybox /bin/sh
/ # ls 
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # 

//可以看到该容器在运行
[root@192 ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND     CREATED          STATUS          PORTS     NAMES
c81b18591d2d   busybox   "/bin/sh"   26 seconds ago   Up 26 seconds             dreamy_ishizaka

当前台退出时,容器也将停止运行

//运行一个容器在后台运行,本地有httpd的镜像
[root@192 ~]# docker run -d httpd
d3894a9b277f191a2401c1dc90eb5b1cc74fd3316e8a066f6bfa1394b163a221
[root@192 ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS          PORTS     NAMES
d3894a9b277f   httpd     "httpd-foreground"   13 seconds ago   Up 13 seconds   80/tcp    mystifying_gould
  • docker inspect
//查看容器详细信息
[root@192 ~]# docker inspect d3894a9b277f
[
    {
        "Id": "d3894a9b277f191a2401c1dc90eb5b1cc74fd3316e8a066f6bfa1394b163a221",
        "Created": "2021-12-02T03:40:26.107087982Z",
        "Path": "httpd-foreground",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 1709,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-12-02T03:40:26.535732568Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:ad17c88403e2cedd27963b98be7f04bd3f903dfa7490586de397d0404424936d",
        "ResolvConfPath": "/var/lib/docker/containers/d3894a9b277f191a2401c1dc90eb5b1cc74fd3316e8a066f6bfa1394b163a221/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/d3894a9b277f191a2401c1dc90eb5b1cc74fd3316e8a066f6bfa1394b163a221/hostname",
        "HostsPath": "/var/lib/docker/containers/d3894a9b277f191a2401c1dc90eb5b1cc74fd3316e8a066f6bfa1394b163a221/hosts",
        "LogPath": "/var/lib/docker/containers/d3894a9b277f191a2401c1dc90eb5b1cc74fd3316e8a066f6bfa1394b163a221/d3894a9b277f191a2401c1dc90eb5b1cc74fd3316e8a066f6bfa1394b163a221-json.log",
        "Name": "/mystifying_gould",
        "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/07c5a55fe46a4e574b67cf6ddd8227b1fff0a75dd42c8d1e797dc856f8e748ae-init/diff:/var/lib/docker/overlay2/38871ca6ecdf79195769202c291f69a2a4e8debadaea07a3931c22939c9054a9/diff:/var/lib/docker/overlay2/c9d15bd3e9a8c91a3458e7aee11470dbc6053307de862a37a97b0cd6e57386ac/diff:/var/lib/docker/overlay2/97add0df15747da6893565b07b63e48a4ada6b11dbaf6784545eec3f2918f333/diff:/var/lib/docker/overlay2/148dd89935991b314194a0dc25ff448f2994fd8cf817ef8613b63f5cd56d6cda/diff:/var/lib/docker/overlay2/5f7e1a1f1ccd0c5118dc23f3836abf31f2ce3186d006ca66aa17755ca8790232/diff",
                "MergedDir": "/var/lib/docker/overlay2/07c5a55fe46a4e574b67cf6ddd8227b1fff0a75dd42c8d1e797dc856f8e748ae/merged",
                "UpperDir": "/var/lib/docker/overlay2/07c5a55fe46a4e574b67cf6ddd8227b1fff0a75dd42c8d1e797dc856f8e748ae/diff",
                "WorkDir": "/var/lib/docker/overlay2/07c5a55fe46a4e574b67cf6ddd8227b1fff0a75dd42c8d1e797dc856f8e748ae/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "d3894a9b277f",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/apache2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "HTTPD_PREFIX=/usr/local/apache2",
                "HTTPD_VERSION=2.4.51",
                "HTTPD_SHA256=20e01d81fecf077690a4439e3969a9b22a09a8d43c525356e863407741b838f4",
                "HTTPD_PATCHES="
            ],
            "Cmd": [
                "httpd-foreground"
            ],
            "Image": "httpd",
            "Volumes": null,
            "WorkingDir": "/usr/local/apache2",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {},
            "StopSignal": "SIGWINCH"
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "73c6fc741e8dffecd8f116c4603f14379d73e064713894012db6c7c17996cd73",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "80/tcp": null
            },
            "SandboxKey": "/var/run/docker/netns/73c6fc741e8d",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "88cf485fdffff872264619a59a747f7a7a7280dbc332921d75dc151d7642201d",
            "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": "58c1d3fef14fdea591aa30adda6277e75330a3a8cf6063d15a792e7dedc18693",
                    "EndpointID": "88cf485fdffff872264619a59a747f7a7a7280dbc332921d75dc151d7642201d",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",      //IP地址
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]

//尝试访问httpd
[root@192 ~]# curl 172.17.0.2
<html><body><h1>It works!</h1></body></html>
  • docker logs
[root@192 ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS         PORTS     NAMES
d3894a9b277f   httpd     "httpd-foreground"   5 minutes ago   Up 5 minutes   80/tcp    mystifying_gould

//测试日志功能,多次访问httpd,查看日志是否记录
[root@192 ~]# docker logs d3894a9b277f
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Thu Dec 02 03:40:26.563516 2021] [mpm_event:notice] [pid 1:tid 140141847424320] AH00489: Apache/2.4.51 (Unix) configured -- resuming normal operations
[Thu Dec 02 03:40:26.569965 2021] [core:notice] [pid 1:tid 140141847424320] AH00094: Command line: 'httpd -D FOREGROUND'
172.17.0.1 - - [02/Dec/2021:03:43:42 +0000] "GET / HTTP/1.1" 200 45
172.17.0.1 - - [02/Dec/2021:03:45:58 +0000] "GET / HTTP/1.1" 200 45
172.17.0.1 - - [02/Dec/2021:03:45:59 +0000] "GET / HTTP/1.1" 200 45
172.17.0.1 - - [02/Dec/2021:03:46:00 +0000] "GET / HTTP/1.1" 200 45
172.17.0.1 - - [02/Dec/2021:03:46:00 +0000] "GET / HTTP/1.1" 200 45
172.17.0.1 - - [02/Dec/2021:03:46:01 +0000] "GET / HTTP/1.1" 200 45
172.17.0.1 - - [02/Dec/2021:03:46:01 +0000] "GET / HTTP/1.1" 200 45
  • docker rm
docker rm 只能删除不在运行的容器,若想删除正在运行的容器需要添加-f 选项

[root@192 ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS         PORTS     NAMES
d3894a9b277f   httpd     "httpd-foreground"   9 minutes ago   Up 9 minutes   80/tcp    mystifying_gould
[root@192 ~]# docker rm -f d3894a9b277f
d3894a9b277f
[root@192 ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

//同时删除多个不在运行的容器
[root@192 ~]# docker rm $(docker ps -aq)
cab00aa31132
8dbdfec69733
7d9b1d050434
1ab91e1de56e
c81b18591d2d
6fa95fc70923
a590c58c833d
  • docker attach
    进入容器在前台运行,但是任何操作都无效,只能使用ctrl+c强制退出容器,退出容器后容器也将不在运行
  • docker exec
    进入正在运行的容器,可以进行操作,退出容器后容器也会继续运行
[root@192 ~]# docker exec -it 5780253714ae /bin/sh
# ls 
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs	modules
# cd build
# exit

[root@192 ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS              PORTS     NAMES
5780253714ae   httpd     "httpd-foreground"   5 minutes ago   Up About a minute   80/tcp    pensive_mcclintock
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值