什么是docker

docker中的容器:

lxc --> libcontainer --> runC
在这里插入图片描述

OCI&OCF

OCI
Open Container-initiative(开放容器倡议)

由Linux基金会主导于2015年6月创立
旨在围绕容器格式和运行时制定一个开放的工业化标准
包含两个规格:
运行时规范(runtime-spec)
形象规范(image-spec)
OCF
Open Container Format(开放式容器格式)
runC 是一个 CLI 工具,用于根据 OCI 规范生成和运行容器

容器作为 runC 的子进程启动,可以嵌入到各种其他系统中,而无需运行守护进程
runC 建立在 libcontainer 之上,同样的容器技术为数百万个 Docker 引擎安装提供支持
docker提供了一个专门容纳容器镜像的站点

docker架构

docker使用的是C/S架构(服务端/客户端)Docker客户端与 Docker守护进程对话,后者负责构建、运行和分发 Docker 容器的繁重工作。Docker 客户端和守护程序可以 运行在同一系统上,或者您可以将 Docker 客户端连接到远程 Docker 守护程序。Docker 客户端和守护进程使用 REST API、UNIX 套接字或网络接口进行通信。另一个 Docker 客户端是 Docker Compose,它允许您使用由一组容器组成的应用程序。
在这里插入图片描述

Docker使用客户端 - 服务器架构。守护程序docker daemon 负责构建,上传和运行您的Docker容器。

Docker客户端和守护程序可以在同一系统上运行,也可以将Docker客户端连接到远程Docker守护程序。Docker客户端和守护程序使用REST API,通过UNIX套接字或网络接口进行通信。

Docker主机

Docker主机运行docker daemon。Docker守护程序侦听Docker请求。

Docker请求可以是“docker run”,“docker build”,任何命令。

它管理docker对象,如镜像,容器,网络和卷。

Docker客户端

Docker Client用于触发Docker命令。当我们发送任何命令(docker build,docker run等)时,docker客户端会将这些命令结束到Docker守护进程,这将进一步处理它们。

注意:Docker客户端可以与多个守护程序通信。

Docker仓库

Registry是一个无状态,高度可扩展的服务器端应用程序,可存储并允许您分发Docker镜像。您可以创建自己的镜像,也可以使用公共仓库,即Docker Hub和Docker Cloud。Docker配置为默认在Docker Hub上查找镜像。

我们实际上可以创建自己的仓库。

因此,当我们运行命令docker pull或docker run时,将从配置的仓库中提取所需的映像。使用docker push命令时,映像将被推送到配置的仓库。

docker的镜像与镜像仓库

为什么镜像仓库名字是Registry而不是repository?在docker中仓库的名字是以应用的名称取名的。
大家应该在码头或港口见过集装箱

registry:就类似于码头的集装箱,集装箱里装的是同一种货物。(这个也就是我们所说的镜像)
repository:就类似于存放集装箱的场地。(这个就是镜像仓库)
在这里插入图片描述
镜像是静态的,而容器是动态的,容器有其生命周期,镜像与容器的关系类似于程序与进程的关系。镜像类似于文件系统中的程序文件,而容器则类似于将一个程序运行起来的状态,也即进程。

因为容器是通过镜像构建出来的,这就好比人的心脏,当心脏停止跳动,人自然也就生命活动了。

Docker对象

Docker镜像,容器,网络,卷,插件等是Docker对象。

在Dockerland,有图像,有容器。这两者密切相关,但截然不同。但这一切都始于Dockerfile。

一个Dockerfile是您创建镜像时,你建立的一个文件。它包含一堆指令,告知Docker如何构建Docker镜像。

你可以把它与烹饪联系起来。在烹饪中你有食谱。通过配方,您可以了解必须采取的所有步骤,以便生成您想要烹饪的任何内容。烹饪行为正在建立食谱。

docker的安装以及使用方法

若之前安装过旧版本就卸载重新安装加粗样式
// 若没有安装过docker或新环境则可跳过此步骤
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
//设置存储库
[root@localhost ~]# yum -y install yum-utils  //这是为了提供yum-config-manager命令
[root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo // 提供docker官方的存储库

[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  //也可以添加阿里云的库

// 配置docker,因为docker默认使用的是国外的源要修改为国内的源
[root@localhost ~]# sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

//安装docker以及依赖
[root@localhost ~]# yum -y install docker-ce docker-ce-cli containerd.io

// 可以通过使用下面的方法安装指定的版本
yum list docker-ce --showduplicates | sort -r  //列出docker的版本

配置docker加速器

点击去之后就可以看到属于自己的镜像加速器了
在这里插入图片描述
docker-ce的配置文件是/etc/docker/daemon.json,此文件默认不存在,需要我们手动创建并进行配置,而docker的加速就是通过配置此文件来实现的。
docker的加速有多种方式:

docker cn
中国科技大学加速器
阿里云加速器

docker是国外的,拉取镜像的时候会很慢,所以要配置加速器来提高访问速度
建议使用阿里云的加速器

// docker官方的加速器
[root@localhost ~]# sudo tee /etc/docker/daemon.json <<-'EOF'
 {
  "registry-mirrors": ["https://registry.docker-cn.com"]
 }
 EOF

// 阿里云的加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://cgxhrn28.mirror.aliyuncs.com"]
}
EOF

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker.service
启动docker服务并设置开机自启
[root@localhost ~]# systemctl enable --now docker.service
测试docker容器否安装成功
[root@localhost ~]# docker version
Client: Docker Engine - Community  //容器引擎的社区版
 Version:           20.10.11  //客户端的版本号
 API version:       1.41  //这个是API的版本号
 Go version:        go1.16.9  //这个是GO语言的版本号
 Git commit:        dea9396   //docker这个版本提交的什么信息
 Built:             Thu Nov 18 00:36:58 2021  //此docker版本构建的时间
 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  //runC的版本号
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0   /docker的init的版本号
  GitCommit:        de40ad0


[root@localhost ~]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:cc15c5b292d8525effc0f89cb299f1804f3a725c8d05e158653a563f15e4f685
Status: Downloaded newer image for hello-world:latest

Hello from Docker!   //出现此行表示安装成功
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

docker命令、参数以及使用

[root@localhost ~]# docker info
Client:
 Context:    default  // 客户端的上下文
 Debug Mode: false  //debug(测试)模式的状态
 Plugins:   //docker的插件
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.6.3-docker)  //buildx镜像的工具包
  scan: Docker Scan (Docker Inc., v0.9.0)  

Server:  //下面是容器的状态
 Containers: 1  //容器的个数
  Running: 0  //运行的容器个数
  Paused: 0  // 暂停状态的容器
  Stopped: 1  //停止状态的容器
 Images: 1  // 镜像的个数
 Server Version: 20.10.11  //dockers服务端的版本
 Storage Driver: overlay2  //储存的驱动版本
  Backing Filesystem: xfs  //后端的文件系统格式为xfs格式(centos7是使用的extfs)
  Supports d_type: true  
  Native Overlay Diff: true
  userxattr: false   //是否支持用户的attr的设置
 Logging Driver: json-file  //日志记录的引擎是json文件的格式
 Cgroup Driver: cgroupfs  //cgroup的驱动
 Cgroup Version: 1  //Cgroup的版本
 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-257.el8.x86_64  //内核的版本号
 Operating System: CentOS Stream 8  //系统版本
 OSType: linux  //系统类型 
 Architecture: x86_64  //架构类型
 CPUs: 2  //CUP的核心数
 Total Memory: 1.748GiB  //内存大小
 Name: localhost.localdomain    //主机名
 ID: SW5D:GFAD:BJBT:45EY:JMIL:JRFV:EZSW:KZCD:USZM:AGWA:NFQJ:YNRD
 Docker Root Dir: /var/lib/docker  //docker的工作目录
 Debug Mode: false   //debug模式的状态
 Registry: https://index.docker.io/v1/    //仓库的位置
 Labels:  //标签
 Experimental: false  //是否是属于测试版本
 Insecure Registries:  //不安全的仓库
  127.0.0.0/8    
 Registry Mirrors:
  https://docker.mirrors.ustc.edu.cn/  //加速器的位置
 Live Restore Enabled: false  //docker的存活期的开启的功能时关闭状态

docker常用命令

命令功能
docker search在 Docker Hub 中搜索镜像
docker pull从注册表中拉取镜像或存储库
docker images列出镜像
docker create创建一个新的容器
docker start启动一个或多个停止的容器
docker run在新容器中运行命令
docker attach附加到正在运行的容器
docker ps列出容器
docker logs获取容器的日志
docker restart重启一个容器
docker stop停止一个或多个正在运行的容器
docker kill杀死一个或多个正在运行的容器
docker rm移除一个或多个容器
docker exec在正在运行的容器中运行命令
docker info显示系统范围的信息
docker inspect返回有关 Docker 对象的低级信息

docker search命令

可以通过访问官网的方式下载想要的镜像,前提时需要登录
docker官网
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                   
flashspys/nginx-static            Super Lightweight Nginx Image                   11                   [OK]
mailu/nginx                       Mailu nginx frontend                            9                    [OK]
sophos/nginx-vts-exporter         Simple server that scrapes Nginx vts stats a…   7                    [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]
centos/nginx-110-centos7          Platform for running nginx 1.10 or building …   0

docker pull命令

[root@localhost ~]# docker pull nginx:1.20.2  //从docker官网中拉取1.20.2版本的nginx镜像
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  //若直接拉取镜像默认拉取最新版本的镜像
[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  //最新版本的镜像

docker images命令

[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
hello-world   latest    feb5d9fea6a5   2 months ago   13.3kB

docker create命令

// 创建一个容器
[root@localhost ~]# docker create nginx  //这个和拉取镜像一样,不指定版本号默认创建最新的
c6119340dcc32204c447c3340ee54ee705f34657e3a9d3aef4d1090064b5fa82

// 当本地没有镜像时docker就会自带去docker仓库去拉取最新版本来创建容器
[root@localhost ~]# docker create busybox  //这个镜像本地没有
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
3aab638df1a9: Pull complete 
Digest: sha256:52817dece4cfe26f581c834d27a8e1bcc82194f914afe6d50afad5a101234ef1
Status: Downloaded newer image for busybox:latest
b1fe6541bb6031fc6c057cb726aabfe1f1da6b9fd1cdf9b278c3233c173a369c

[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
busybox       latest    d23834f29b38   33 hours ago   1.24MB

[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS                        PORTS     NAMES
b1fe6541bb60   busybox       "sh"                     3 minutes ago    Created                                 modest_easley

[root@localhost ~]# docker start b1fe6541bb60  //启动此容器
b1fe6541bb60
[root@localhost ~]# docker ps  //发现没有启动
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
// 那是因为sh这个命令执行完之后,就没有任务需要执行所以就直接退出了

// 可以执行下面的命令让他保持运行状态,通俗的说就是给她一个任务让他执行,也就是让他有事做
[root@localhost ~]# docker create busybox sleep 500
b13bcfc22a02c710fa7c4e30f3d4a8293dedf25a619d6c2cab319c27b5934167

// 此时我们再次启动发现他处于运行状态
[root@localhost ~]# docker start b13bcfc22a02
b13bcfc22a02
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS         PORTS     NAMES
b13bcfc22a02   busybox   "sleep 500"   About a minute ago   Up 4 seconds             dreamy_turing

docker ps命令

[root@localhost ~]# docker ps  //此命令只能查看正在运行的容器
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

[root@localhost ~]# docker ps -a  //加-a可以查看所有的容器
CONTAINER ID   IMAGE         COMMAND                  CREATED         STATUS                    PORTS     NAMES
c6119340dcc3   nginx         "/docker-entrypoint.…"   3 minutes ago   Created                             vigorous_mestorf
efa2e040f6d0   hello-world   "/hello"                 33 hours ago    Exited (0) 33 hours ago             gracious_ardinghelli
// 从左至右分别是容器的ID、镜像、容器执行的命令、创建容器的时间、容器的状态、容器运行的服务的端口号、容器名字

docker start命令

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS              PORTS     NAMES
c6119340dcc3   nginx     "/docker-entrypoint.…"   10 minutes ago   Up About a minute   80/tcp    vigorous_mestorf

[root@localhost ~]# docker stop c6119340dcc3  //停止运行容器
c6119340dcc3

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

docker restart命令

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

[root@localhost ~]# docker restart c6119340dcc3  //重启容器
c6119340dcc3
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS         PORTS     NAMES
c6119340dcc3   nginx     "/docker-entrypoint.…"   11 minutes ago   Up 5 seconds   80/tcp    vigorous_mestorf

docker kill命令

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS         PORTS     NAMES
c6119340dcc3   nginx     "/docker-entrypoint.…"   14 minutes ago   Up 2 minutes   80/tcp    vigorous_mestorf

 //这个kill命令和stop的功能一样,但是有一点不同的是kill是直接杀死进程类似于kill -9命令,属于暴力关闭,而stop类似于kill -15命令,属于"优雅"的关闭
[root@localhost ~]# docker kill c6119340dcc3 
c6119340dcc3
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

docker run命令

-i 就是交互模式,可以和容器进行交互
- t 指定tty 就是给容器一个类似于shell
[root@localhost ~]# docker run -it busybox /bin/sh  //容器里面也可以执行命令行的命令
/ # 
/ # ip a   //查看容器的IP地址
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
16: eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # exit  //退出容器

// docker run -d 让容器后台运行并且打印容器id
[root@localhost ~]# docker run -d httpd  //让httpd处于后台运行
Unable to find image 'httpd:latest' locally
latest: Pulling from library/httpd
eff15d958d66: Already exists 
ba1caf8ba86c: Pull complete 
ab86dc02235d: Pull complete 
0d58b11d2867: Pull complete 
e88da7cb925c: Pull complete 
Digest: sha256:1d71eef54c08435c0be99877c408637f03112dc9f929fba3cccdd15896099b02
Status: Downloaded newer image for httpd:latest
2d110156953c6e4b7f497edef0c57503563ee97d49d953bd9c18177aa2ca0f8e  //此处为容器的id

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS          PORTS     NAMES
2d110156953c   httpd     "httpd-foreground"   46 seconds ago   Up 43 seconds   80/tcp    relaxed_moore

docker inspect 命令

[root@localhost ~]# docker inspect 2d110156953c  //inspect+容器的id,可以查看容器的详细信息
[
    {
        "Id": "2d110156953c6e4b7f497edef0c57503563ee97d49d953bd9c18177aa2ca0f8e",
        "Created": "2021-12-01T20:43:05.569236546Z",
        "Path": "httpd-foreground",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 3554,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2021-12-01T20:43:07.921679379Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
此处省略N行
"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@localhost ~]# curl 172.17.0.2  //通过容器的IP进行访问
<html><body><h1>It works!</h1></body></html>

docker logs命令

如果一个容器中运行了多个服务,那么这个功能将失效了。这也事因为一个容器只运行一个服务的原因
[root@localhost ~]# docker logs 2d110156953c  //查看服务的日志
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
[Wed Dec 01 20:43:07.990665 2021] [mpm_event:notice] [pid 1:tid 139955215789376] AH00489: Apache/2.4.51 (Unix) configured -- resuming normal operations
[Wed Dec 01 20:43:07.991055 2021] [core:notice] [pid 1:tid 139955215789376] AH00094: Command line: 'httpd -D FOREGROUND'
172.17.0.1 - - [01/Dec/2021:20:49:46 +0000] "GET / HTTP/1.1" 200 45
172.17.0.1 - - [01/Dec/2021:20:53:57 +0000] "GET / HTTP/1.1" 200 45

docker attach命令

[root@localhost ~]# docker attach 2d110156953c  //进入容器,但是会占用前台,不能做任何操作,一般不建议使用此操作

docker exec命令

// 容器后台
[root@localhost ~]# docker exec -it 2d110156953c /bin/bash

root@2d110156953c:/usr/local/apache2# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs	modules

docker rm命令

// docker rm命令只能删除停止状态的容器,处于运行状态的容器删除不了。
docker rm -f命令可强制删除容器

// -a是列出所有的容器,-q是列出容器的id
[root@localhost ~]# docker rm $(docker ps -aq)  //这种方法可以批量删除容器
c97fccd0eed8
071d7e163079
cf54d5708379
34d776168c94
b13bcfc22a02
b1fe6541bb60
c6119340dcc3
efa2e040f6d0
Error response from daemon: You cannot remove a running container 2d110156953c6e4b7f497edef0c57503563ee97d49d953bd9c18177aa2ca0f8e. Stop the container before attempting removal or force remove

[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS          PORTS     NAMES
2d110156953c   httpd     "httpd-foreground"   20 minutes ago   Up 20 minutes   80/tcp    relaxed_moore
Logo

更多推荐