docker的配置,基础用法

2023-11-16

什么是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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker的配置,基础用法 的相关文章

  • 如何查明 Ubuntu 上安装了哪个版本的 GTK+?

    我需要确定 Ubuntu 上安装了哪个版本的 GTK 男人似乎不帮忙 这个建议 https stackoverflow com a 126145 会告诉您安装了哪个 2 0 的次要版本 不同的主要版本将具有不同的包名称 因为它们可以在系统上
  • numpy 未定义符号:PyFPE_jbuf

    我正在尝试使用一百万首歌曲数据集 为此我必须安装 python 表 numpy cython hdf5 numexpr 等 昨天我设法安装了我需要的所有内容 在使用 hdf5 遇到一些麻烦之后 我下载了预编译的二进制包并将它们保存在我的 b
  • 如何获取 linux 实用程序 tail 的源代码?

    这个命令确实非常有用 但是我可以在哪里获取源代码以查看内部发生的情况 thanks tail 实用程序是 Linux 上 coreutils 的一部分 源压缩包 ftp ftp gnu org gnu coreutils coreutils
  • 如何让 clangd 转向 c++20

    当没有其他信息时 如何让 clangd 回退到 c 20 例如 在第一次构建之前 cmake 可以生成一个 这是在带有最新 LLVM 的 Arch Linux 上 这是通过 Emacs LSP 运行的 但这应该没有什么区别 你可以加 Com
  • 构建 makefile 依赖/继承树

    如果我解释得不好或者问了一些明显的问题 我很抱歉 但我是 Linux 内核的新手 而且有点深入 我们有一个嵌入式 Linux 系统 它附带一个 文档非常糟糕的 SDK 其中包含数百个文件夹stuff 大多数文件夹包含rules make m
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 无法执行'x86_64-conda_cos6-linux-gnu-gcc':没有这样的文件或目录(pysam安装)

    我正在尝试安装 pysam 执行后 python path to pysam master setup py build 这个错误的产生是 unable to execute x86 64 conda cos6 linux gnu gcc
  • 如何在Python中独立于语言安装(linux)获取用户桌面路径

    我找到了 如何找到用户桌面的路径 的几个问题和答案 但在我看来它们都已失效 至少我找到的那些 原因是 如果用户安装的 Linux 不是英语 他或她的桌面很可能位于除 Desktop 例如 对于瑞典语 我相信它是在 Skrivbord 谁知道
  • 如何以编程方式从Linux中的进程名称获取进程ID

    在我的项目中 我们使用 ACE 自适应通信环境 中间件来编写可在 Windows 和 Linux 上运行的独立于操作系统的代码 要求是从进程名称中获取进程 ID 由于 ACE 不支持这一点 因此我们必须使用特定于平台的宏来分离 Window
  • Linux shell 脚本:十六进制数字到二进制字符串

    我正在 shell 脚本中寻找一些简单的方法来将十六进制数字转换为 0 和 1 字符的序列 Example 5F gt 01011111 是否有任何命令或简单的方法来完成它 或者我应该为其编写一些开关 echo ibase 16 obase
  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • 设置 Apache POI 的路径

    我想创建 Excel 文件并使用 java 程序在该文件中写入数据 That is here http www techbrainwave com p 554我在 java 文件所在的位置提取了 Apache POI 并将该路径包含在路径变
  • 没有可用的符号表信息

    我正在测试第三方的库 它崩溃了 当我想查看崩溃的原因时 我的 gdb 告诉我没有可用的调试符号 Program received signal SIGSEGV Segmentation fault Switching to Thread 0
  • SONAR - 使用 Cobertura 测量代码覆盖率

    我正在使用声纳来测量代码质量 我不知道的一件事是使用 Cobertura 测量代码覆盖率的步骤 我按照以下步骤操作http cobertura sourceforge net anttaskreference html http cober
  • 如何制作和应用SVN补丁?

    我想制作一个SVN类型的补丁文件httpd conf这样我就可以轻松地将其应用到其他主机上 If I do cd root diff Naur etc httpd conf httpd conf original etc httpd con
  • ansible 重新启动 2.1.1.0 失败

    我一直在尝试创建一个非常简单的 Ansible 剧本 它将重新启动服务器并等待它回来 我过去在 Ansible 1 9 上有一个可以运行的 但我最近升级到 2 1 1 0 并且失败了 我正在重新启动的主机名为 idm IP 为 192 16
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • 为什么我收到“无法进行二进制日志记录”的信息。在我的 MySQL 服务器上?

    当我今天启动 MySQL 服务器并尝试使用以下命令进行一些更改时用于 MySQL 的 Toad http www quest com toad for mysql 我收到此消息 MySQL 数据库错误 无法进行二进制日志记录 消息 交易级别
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • Elasticsearch 无法写入日志文件

    我想激活 elasticsearch 的日志 当我运行 elasticsearch 二进制文件时 我意识到我在日志记录方面遇到问题 无法加载配置 这是输出 sudo usr share elasticsearch bin elasticse

随机推荐

  • 第三方支付自建商户池体系

    三方支付自建商户池体系通常指的是第三方支付机构自己搭建的商户池管理系统 商户池是指该支付机构所拥有的所有商户账户的集合 在支付领域 商户池的建立对于支付机构来说非常重要 它可以帮助支付机构更有效地管理商户 风控和支付流程 以下是自建商户池体
  • Animator的基本用法

    这里仅仅介绍Animator的一些基本的用法 说到Animator 最重要的最常用的的就是ObjectAnimator类 因为这个类可以对任意View的任意属性进行操作 首先以ImageView为例 以下所有的操作都针对ImageView
  • Node.js web3.js编译、部署智能合约

    Node js web3 js编译 部署智能合约 供参考脚本 https github com Saturday24 Smart Contracts Script 1 编译脚本 a install web3 solc fs path b 编
  • linux查看所有的进程及端口,linux查看所有进程和端口

    Linux下查看一个进程占用了哪个端口的方法 时候需要在Linux下查看一个进程占用了那个端口 但是只知道进程大致的名称 比如要查看hadoop的namenode在哪个端口上运行 以便在eclipse中连接 首先用ps命令查看进程的id 复
  • 校招算法题实在不会做,有没有关系?

    文章目录 前言 一 校招 二 时间复杂度 1 单层循环 2 双层循环 三 空间复杂度 四 数据结构 五 校招算法题实在不会做 有没有关系 六 英雄算法集训 前言 英雄算法联盟八月集训 已经接近尾声 九月算法集训将于 09月01日 正式开始
  • Mock 模拟测试简介及 Mockito 使用入门

    Mock 是什么 mock 测试就是在测试过程中 对于某些不容易构造或者不容易获取的对象 用一个虚拟的对象来创建以便测试的测试方法 这个虚拟的对象就是mock对象 mock对象就是真实对象在调试期间的代替品 简单的看一张图 我们在测试类 A
  • Java锁机制,synchronized和lock详解。

    Java锁机制详解 1 java各种锁详解 1 1 公平锁 vs 非公平锁 公平锁 是指多个线程按照申请锁的顺序来获取锁 线程直接进入队列中排队 队列中的第一个线程才能获得锁 类似排队打饭 先来后到 非公平锁 是指多个线程获取锁的顺序并不是
  • HDFS的基础详解

    概念 HDFS是Hadoop Distribute File System 的简称 Hadoop 分布式文件系统 是hadoop核心组件之一 作为最底层的分布式存储服务而存在 分布式文件系统解决的问题就是大数据存储问题 设计目标 1 硬件故
  • 自媒体爆款标题怎么写?手把手教你写热门标题

    自媒体内容想提高阅读量 标题是关键 如何创作优质且有吸引的标题呢 自媒体爆款标题怎么写 今天对热门标题进行解析 手把手教你写爆款标题 1 标题贴合热点 用户对热点的关注度超乎想象 有时候对热点关键词的搜索都能让系统崩溃 所以 在标题中添加热
  • Python语言学习实战-内置函数sorted()的使用(附源码和实现效果)

    实现功能 sorted 函数是Python的内置函数之一 用于对可迭代对象进行排序操作 它可以对列表 元组 字符串等可迭代对象进行排序 并返回一个新的已排序的列表 sorted 函数的语法如下 sorted iterable key Non
  • unity用visual studio写代码的时候一直显示importing assets

    项目场景 提示 使用Unity时打开C 弹出opening visual studio 然后一直停在importing assets这个界面 不影响写代码和运行 但是非常不舒服 困扰我许久 特别浪费时间 问题描述 unity3d打开项目中遇
  • JAVA应用程序集成控件JxBrowser v7.2来啦!允许自定义错误页面

    JxBrowser 点击下载 是将基于Chromium的浏览器与Java应用程序集成 以处理和显示HTML5 CSS3 JavaScript Flash等 JxBrowser更新至最新版v7 2 允许针对HTTP和网络错误覆盖标准Chrom
  • ES 搜索7 (多词查询)

    多词查询 如果我们一次只能搜索一个词 那么全文搜索就会不太灵活 幸运的是 match 查询让多词查询变得简单 GET my index my type search query match title BROWN DOG 上面这个查询返回所
  • vue 使用el-option标签解决不回显的问题

    一 问题描述
  • 最新----Dubbo Spring Cloud 重塑微服务治理

    spring cloud alibaba dubbo examples代码示例 摘要 在 Java 微服务生态中 Spring Cloud1 成为了开发人员的首选技术栈 然而随着实践的深入和运用规模的扩大 大家逐渐意识到 Spring Cl
  • 中兴2023秋招二面

    中兴二面 面试时长为20分钟的样子 请问你带了身份证或者学生证件吗 1 自我介绍 姓名 学校 专业 兴趣爱好 2 项目分工 应该问的是如何分工 我回答的不太好 首先根据项目工作量 分为几份工作 团队成员自行根据自己的情况认领对应项目 团队负
  • LU分解法

    LU分解的原理是将一个矩阵分解为一个下三角矩阵L和一个上三角矩阵U的乘积 下面是LU分解的原理 定一个n n的矩阵A 我们希望将它分解为下三角矩阵L和上三角矩阵U的乘积 即A LU 我们可以在矩阵A上进行列主元高斯消元 消元的过程中会用到矩
  • File "errorchecker.pyx", line 17, in OpenGL_accelerate.errorchecker._ErrorChecker.__init__ (src\erro

    先安装 pip install PyOpenGL 3 0 2 再安装 pip install PyOpenGL PyOpenGL accelerate 结果 这次只安装PyOpenGL accelerate 调用代码会报错 File err
  • uView的组件u-picker 选择器

    网址 https www uviewui com components picker html 需要的是数组中的数组 处理核心是将接口获取回来的数组 赋给一个空数组 然后把这空数组再push到一个空数组里面 this arr1 res da
  • docker的配置,基础用法

    什么是docker docker中的容器 lxc gt libcontainer gt runC OCI OCF OCI Open Container initiative 开放容器倡议 由Linux基金会主导于2015年6月创立 旨在围绕