docker基础

Docker基础用法

Docker的发展史

很久以前
2008年,Solomon Hykes 和他的朋友 Kamel Founadi、Sebastien Pahl 共同创立了一家名为 DotCloud 的公司,目标是利用一种叫做容器的技术来创建他们称作是“大规模的创新工具”:任何人都可以使用的编程工具。

2010年,dotCloud获得了创业孵化器Y Combinator的支持,并开始吸引到一些真正的投资,在接下来的3年中,dotCloud内部孵化了一款名为Docker的产品。

2013年
2013 年 3 月 Docker 创始人 Solomon Hykes 在 PyCon 大会上的演讲中首次公开介绍了 Docker 这一产品。在2013 年 PyCon 大会之后,Docker 的创新式镜像格式以及容器运行时迅速成为社区、客户和更广泛行业的实际标准和基石。Docker 的强大之处在于它通过可移植的形式和易于使用的工具在应用程序和基础设施之间创造了独立性。其结果是,Docker将容器技术大众化,并解决了困扰数百万开发人员的“matrix from hell”问题,使容器技术成为主流。

2013年3月20日,dotCloud发布了 Docker 的首个版本,并将Docker源码进行开源。https://github.com/docker/
在这里插入图片描述

2013年9月 红帽公司成为Docker的主要合作伙伴,利用Docker来驱动他的OpenShift云业务。随后,谷歌、亚马逊以及DigitalOcean也迅速的在其云服务平台提供了Docker的支持。主流云厂商的加入,加速Docker的发展进度。

随着Docker技术的开源,此项技术能够将Linux容器中的应用代码打包并轻松的在服务器之间迁移,Docker技术瞬时的风靡了全球,2013年底DotCloud Inc则更名为Docker Inc,并全力的主攻到Docker项目开发中。

2014年
2014年6月的DockerCon大会上Docker正式发布了Docker 1.0 版本。这也意味着Docker的稳定性和可靠性已经基本满足了生产环境的运行需求。会议上同时发布Docker Image的镜像仓库Docker Hub(http://hub.docker.com/),并指出已经有超过14,000个Docker化的应用存储在他们的publc registry中。

也是同样的2014年6月,基于谷歌内部强大的Borg系统而开发出来的kubernetes横空处世,刷新了人们对容器的理解。
在这里插入图片描述

2014年8月份,Docker Inc宣布将用于PaaS业务服务的DotCloud软件出售给德国柏林的PaaS服务厂商CloudControl,自此以后,DotCloud正式的和Docker分道扬镳了。

2014年12月举行的DockerConEU大会上,Docker Swarm 和Docker Machine同时面世。Docker Swarm是一个Docker集群管理工具,而Docker Machine是部署Docker主机的命令工具。

2014年12月里,CoreOS宣布开发自家的容器运行环境rkt以及appc容器规范。

2015年
容器技术不只Docker,很早之前Google就投资了CoreOS来做竞争的容器–Rocket。那时是三家鼎立:Docker/Rocket/Warden,为了避免惨烈的竞争,大家终于统一意见,决定成立固定的标准来良好发展容器技术。

2015年6月,由Docker、IBM、微软、红帽及Google等厂商所组成的开放容器项目OCP联盟成立,该项目旨在建立软件容器的通用标准。OCP成立于Linux基金会之下,其使命是使用户和公司能够继续创新和开发基于容器的解决方案,并充满信心地保护其先前的开发工作,并且不会造成行业分散。作为该计划的一部分,Docker将捐赠其软件容器格式,运行时以及相关规范的代码。应用容器规范(“ appc”)计划的领导者,包括创始成员CoreOS,也将把他们的技术领导力和支持带到OCP。

2015 年,Docker 发布了 runC工具,runc是根据OCI标准生成的一个cli工具,一个轻量级的跨平台的容器运行时命令行小工具,可以直接利用 libcontainer 运行容器,而无需通过 docker engine。runC 的目标是使标准容器在任何地方都可用。

2016年
2016年6月的DockerCon上,Docker宣布了Open Container Initiative的正式成立。OCI意在业界一起合作,开发一个开放的、标准的容器格式和runtime。OCI也属于Linux基金会的协作项目,一直秉承着开放的模式来管理,其roadmap在GitHub上,大家都可以看到并参与进去:https://github.com/opencontainers/specs/blob/master/ROADMAP.md
在这里插入图片描述

2016年,OCI标准制定后,Docker 将 containerd 独立拆分,并将其捐赠给了社区。将这个组件分解为一个单独的项目,使得 docker 将容器的管理功能移出 docker 的核心引擎并移入一个单独的守护进程(即 containerd)。

在2016年,人们认识到容器技术本身的价值时在于容器的编排,而此时的Docker项目令人惊讶的放弃了Swarm项目,而是想将容器的编排和集群的管理功能添加到Docker项目当中。而Kubernetes却与Docker不同的是推进民主化架构,使得通过暴露Kubernetes API的方法,让更多的人来不断丰富kubernetes的插件。

2017年
从2013年3月开始推出0.1.0版本,到17年2月1.13的版本都采用x.x的形式。从 2017 年第一季度开始,Docker 版本号遵循 YY.MM-xx 格式。

2017 年是容器成为主流技术的一年,这就是为什么 Docker 在 Linux 之外支持众多平台的原因(Docker for Mac,Docker for Windows,Docker for AWS,GCP 等)。

2017 年于 Austin 举办的 DockerCon 上开源Docker项目正式命名为 Moby 项目。由于这次改名,GitHub 上的 docker/docker 库也被转移到了 moby/moby,并且拥有了项目自己的 Logo,如下图所示。

在这里插入图片描述

于此同时,将Docker本身拆分为Docker-CE免费版和Docker-EE商业版。

Docker-CE目前是docker公司维护的开源项目,是一个基于Moby项目的免费的容器产品。

Docker-EE目前是docker公司维护的闭源项目,是docker公司的商业产品。

至此,容器天下三分。其中Moby由社区维护,Docker-CE由Docker公司维护,Docker-EE是Docker公司闭源的商业产品。

2018年
2018年3月 Docker 公司创始人Solomon Hykes 在 Docker 博客上(https://www.docker.com/blog/au-revoir/ 或者 https://blog.csdn.net/dt763C/article/details/79752939)宣布已正式从 Docker 公司离职,不再担任公司的日常运作工作。Solomon Hykes 表示,他未来的身份将是 Docker 的董事会成员、主要股东,以及 Docker 维护者,但不再负责担任公司的日常工作。

2019年及未来
2019年容器市场基本趋于稳定,一切都向着优化改进方向发展。Docker公司是底层容器引擎及运行时的。容器的编排进过几轮的激烈竞争,基本是GOOGLE的Kubernetes一家独大。

新的战斗已经由容器和编排的战场,逐渐迁移到应用领域。云原生CNCF将引领新的技术方向,微服务、ServcieMesh、Envoy、ServerLess等正在路上

安装及使用Docker

安装docker

[root@192 ~]# cd /etc/yum.repos.d/
[root@192 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:01 --:--:--100  1919  100  1919    0     0   1565      0  0:00:01  0:00:01 --:--:--  1565
[root@192 yum.repos.d]# sed -i 's@https://download.docker.com@https://mirrors.tuna.tsinghua.edu.cn/docker-ce@g' docker-ce.repo
[root@192 yum.repos.d]# 
[root@192 ~]# yum -y install docker-ce --allowerasing
过程略过...

开机自启

[root@192 ~]# systemctl enable --now docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@192 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; ven>
   Active: active (running) since Sun 2022-08-07 15:37:00 CST; 14s ago
     Docs: https://docs.docker.com
 Main PID: 33619 (dockerd)
    Tasks: 9
   Memory: 33.2M
   CGroup: /system.slice/docker.service
           └─33619 /usr/bin/dockerd -H fd:// --containerd=/run/containe>

Aug 07 15:36:59 192.168.64.129 dockerd[33619]: time="2022-08-07T15:36:5>
Aug 07 15:36:59 192.168.64.129 dockerd[33619]: time="2022-08-07T15:36:5>
Aug 07 15:36:59 192.168.64.129 dockerd[33619]: time="2022-08-07T15:36:5>
Aug 07 15:37:00 192.168.64.129 dockerd[33619]: time="2022-08-07T15:37:0>
Aug 07 15:37:00 192.168.64.129 dockerd[33619]: time="2022-08-07T15:37:0>
Aug 07 15:37:00 192.168.64.129 dockerd[33619]: time="2022-08-07T15:37:0>
[root@192 ~]# 

Docker 加速

docker-ce的配置文件是/etc/docker/daemon.json,此文件默认不存在,需要我们手动创建并进行配置,而docker的加速就是通过配置此文件来实现的。

docker的加速有多种方式:

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

[root@192 ~]# cd /etc/docker/
[root@192 docker]# ls
key.json
[root@192 docker]# vim daemon.json
[root@192 docker]# cat daemon.json 
{										//我这边用的是阿里云,注意每个人的加速器都不一样
	  "registry-mirrors": ["https://6e5o0ntr.mirror.aliyuncs.com"]
}
[root@192 docker]# 

配置好了重启docker

[root@192 docker]# systemctl restart docker
[root@192 docker]# cd
[root@192 ~]# docker version 
Client: Docker Engine - Community
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:03:11 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.11
  Git commit:       a89b842
  Built:            Mon Jun  6 23:01:29 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.6
  GitCommit:        10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc:
  Version:          1.1.2
  GitCommit:        v1.1.2-0-ga916309
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
[root@192 ~]# 
[root@192 ~]# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.8.2-docker)
  scan: Docker Scan (Docker Inc., v0.17.0)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 20.10.17
 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: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc version: v1.1.2-0-ga916309
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 4.18.0-348.el8.x86_64
 Operating System: CentOS Linux 8
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 3.623GiB
 Name: 192.168.64.129
 ID: BRZL:ERLM:EFL6:WBZ4:3CG2:VBEH:3YDY:FRHY:IXRK:77NM:K6KE:KBFW
 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://6e5o0ntr.mirror.aliyuncs.com/
 Live Restore Enabled: false

[root@192 ~]# 

Docker 常用操作

命令功能
docker searchSearch the Docker Hub for images
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 runRun a command in a new container
docker attachAttach to a runninng container
docker psList containers
docker logsFetch the logs of a container
docker restartRestart a container
docker stopStop one or more running containers
docker killKill one or more running containers
docker rmRemove onne or more containers
docker execRun a command in a running container
docker infoDisplay system-wide information
docker inspectReturn low-level information on Docker objects
[root@192 ~]# docker search httpd
NAME                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
httpd                                The Apache HTTP Server Project                  4109      [OK]       
centos/httpd-24-centos7              Platform for running Apache httpd 2.4 or bui…   44                   
centos/httpd                                                                         35                   [OK]

[root@192 ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
a1d0c7532777: Pull complete 
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
[root@192 ~]# 

[root@192 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       latest    5d0da3dc9764   10 months ago   231MB
[root@192 ~]# 
//图像列表
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       latest    5d0da3dc9764   10 months ago   231MB
[root@localhost ~]# 
//创建一个新的容器
[root@localhost ~]# docker create centos 
2caea7caeb9a0258f68607f1599451ce3f817888ff54eca11bf9ed65506f89b2
[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
2caea7caeb9a   centos    "/bin/bash"   11 seconds ago   Created             nervous_nobel
[root@localhost ~]# 
//启动一个或多个停止的容器
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS    PORTS     NAMES
2caea7caeb9a   centos    "/bin/bash"   2 minutes ago   Created             nervous_nobel
[root@localhost ~]# docker start  2caea7caeb9a 
2caea7caeb9a
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                      PORTS     NAMES
2caea7caeb9a   centos    "/bin/bash"   4 minutes ago   Exited (0) 27 seconds ago             nervous_nobel
//创建并运行中的容器
[root@localhost ~]# docker create -it   centos sleep  6000  
aa0a9951e65ad030a65e07a282779c90ca7a9304b6cc0bb688c663c64b8eb2fa
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND        CREATED          STATUS                     PORTS     NAMES
aa0a9951e65a   centos    "sleep 6000"   46 seconds ago   Created                              quizzical_johnson
2caea7caeb9a   centos    "/bin/bash"    7 minutes ago    Exited (0) 4 minutes ago             nervous_nobel
[root@localhost ~]# docker start aa0a9951e65a
aa0a9951e65a
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND        CREATED              STATUS         PORTS     NAMES
aa0a9951e65a   centos    "sleep 6000"   About a minute ago   Up 4 seconds             quizzical_johnson
[root@localhost ~]# 

//在新容器中运行命令
[root@localhost ~]# docker run -d --name web -p 80:80 httpd
Unable to find image 'httpd:latest' locally
latest: Pulling from library/httpd
a2abf6c4d29d: Pull complete 
dcc4698797c8: Pull complete 
41c22baa66ec: Pull complete 
67283bbdd4a0: Pull complete 
d982c879c57e: Pull complete 
Digest: sha256:0954cc1af252d824860b2c5dc0a10720af2b7a3d3435581ca788dff8480c7b32
Status: Downloaded newer image for httpd:latest
63f7ac547ca68d5808243210d3105d9905d64cd4e744041e568991d24317b06f
[root@localhost ~]# 
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS                      PORTS                               NAMES
63f7ac547ca6   httpd     "httpd-foreground"   18 seconds ago   Up 11 seconds               0.0.0.0:80->80/tcp, :::80->80/tcp   web
aa0a9951e65a   centos    "sleep 6000"         8 minutes ago    Up 7 minutes                                                    quizzical_johnson
2caea7caeb9a   centos    "/bin/bash"          15 minutes ago   Exited (0) 12 minutes ago                                       nervous_nobel
[root@localhost ~]# 
[root@localhost ~]# ss -anlt
State      Recv-Q     Send-Q           Local Address:Port           Peer Address:Port     Process     
LISTEN     0          128                    0.0.0.0:80                  0.0.0.0:*                    
LISTEN     0          128                    0.0.0.0:22                  0.0.0.0:*                    
LISTEN     0          128                       [::]:80                     [::]:*                    
LISTEN     0          128                       [::]:22                     [::]:*                    
[root@localhost ~]# 
//卸下一个或多个容器
[root@localhost ~]# docker rm -f web
web
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND        CREATED          STATUS                      PORTS     NAMES
aa0a9951e65a   centos    "sleep 6000"   11 minutes ago   Up 10 minutes                         quizzical_johnson
2caea7caeb9a   centos    "/bin/bash"    18 minutes ago   Exited (0) 14 minutes ago             nervous_nobel
[root@localhost ~]# 
//
[root@localhost ~]# docker rm 2caea7caeb9a
2caea7caeb9a
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS                       PORTS     NAMES
364f1a8a085c   httpd     "httpd-foreground"   20 minutes ago   Exited (0) 6 minutes ago               web
aa0a9951e65a   centos    "sleep 6000"         32 minutes ago   Exited (137) 3 minutes ago             quizzical_johnson
[root@localhost ~]# 
//获取容器的日志

[root@localhost ~]# docker logs web
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.3. 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.3. Set the 'ServerName' directive globally to suppress this message
[Sun Aug 07 08:47:10.726116 2022] [mpm_event:notice] [pid 1:tid 139645241675072] AH00489: Apache/2.4.52 (Unix) configured -- resuming normal operations
[Sun Aug 07 08:47:10.726251 2022] [core:notice] [pid 1:tid 139645241675072] AH00094: Command line: 'httpd -D FOREGROUND'
192.168.119.1 - - [07/Aug/2022:08:47:59 +0000] "GET / HTTP/1.1" 200 45
192.168.119.1 - - [07/Aug/2022:08:47:59 +0000] "GET /favicon.ico HTTP/1.1" 404 196
192.168.119.1 - - [07/Aug/2022:08:48:14 +0000] "GET /favicon.ico HTTP/1.1" 404 196
192.168.119.1 - - [07/Aug/2022:08:48:51 +0000] "-" 408 -
192.168.119.1 - - [07/Aug/2022:08:53:51 +0000] "GET / HTTP/1.1" 304 -
192.168.119.1 - - [07/Aug/2022:08:53:52 +0000] "GET / HTTP/1.1" 304 -
[root@localhost ~]# 
//重新启动容器
[root@localhost ~]# docker restart web
web
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS                      PORTS                               NAMES
364f1a8a085c   httpd     "httpd-foreground"   11 minutes ago   Up 2 seconds                0.0.0.0:80->80/tcp, :::80->80/tcp   web
aa0a9951e65a   centos    "sleep 6000"         23 minutes ago   Up 22 minutes                                                   quizzical_johnson
2caea7caeb9a   centos    "/bin/bash"          30 minutes ago   Exited (0) 27 minutes ago                                       nervous_nobel
//停止一个或多个正在运行的容器
[root@localhost ~]# docker stop web
web
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND        CREATED          STATUS          PORTS     NAMES
aa0a9951e65a   centos    "sleep 6000"   26 minutes ago   Up 25 minutes             quizzical_johnson
[root@localhost ~]# 
//容器列表
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND        CREATED          STATUS          PORTS     NAMES
aa0a9951e65a   centos    "sleep 6000"   28 minutes ago   Up 27 minutes             quizzical_johnson
[root@localhost ~]# docker kill aa0a9951e65a 
aa0a9951e65a
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS                        PORTS     NAMES
364f1a8a085c   httpd     "httpd-foreground"   18 minutes ago   Exited (0) 3 minutes ago                web
aa0a9951e65a   centos    "sleep 6000"         30 minutes ago   Exited (137) 19 seconds ago             quizzical_johnson
2caea7caeb9a   centos    "/bin/bash"          37 minutes ago   Exited (0) 33 minutes ago               nervous_nobel
[root@localhost ~]# 
//如何一下删除全部
[root@localhost ~]# docker run -d httpd
00ecb2f48c43259bc0de6cb4efc4a6b037538f984f06582718f19330d4302647
[root@localhost ~]# docker run -d httpd
fb9b718ffae32a61b02847d68143ccdbd40c3feb229477009c8980fdb1c02d8c
[root@localhost ~]# docker run -d httpd
83a38d7d31e09fee821aa73b21a494246b945ff1ba62716baa964ca14ef8f0ba
[root@localhost ~]# 
[root@localhost ~]# docker run -d httpd
1488817f23a2f750c14d68edb70ba2fbd92d152eba1ec8f1e02bc83ca701d0b4
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS          PORTS     NAMES
1488817f23a2   httpd     "httpd-foreground"   9 seconds ago    Up 5 seconds    80/tcp    serene_shannon
83a38d7d31e0   httpd     "httpd-foreground"   23 seconds ago   Up 20 seconds   80/tcp    busy_kalam
fb9b718ffae3   httpd     "httpd-foreground"   26 seconds ago   Up 23 seconds   80/tcp    nervous_khorana
00ecb2f48c43   httpd     "httpd-foreground"   29 seconds ago   Up 27 seconds   80/tcp    thirsty_chaum
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# docker ps -aq
1488817f23a2
83a38d7d31e0
fb9b718ffae3
00ecb2f48c43
[root@localhost ~]# 
[root@localhost ~]# docker rm -f $(docker ps -aq)
1488817f23a2
83a38d7d31e0
fb9b718ffae3
00ecb2f48c43
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]# 
//返回有关Docker对象的低级信息
[root@localhost ~]# docker run -d httpd
1027b6de945cde762ed31b83e7837c282d8c86f552343bcbacf3005c42b446e4
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS         PORTS     NAMES
1027b6de945c   httpd     "httpd-foreground"   4 seconds ago   Up 3 seconds   80/tcp    nifty_swanson
[root@localhost ~]# 
[root@localhost ~]# docker  inspect 1027b6de945c 
[
   {
       "Id": "1027b6de945cde762ed31b83e7837c282d8c86f552343bcbacf3005c42b446e4",
       "Created": "2022-08-07T09:22:19.065276025Z",
       "Path": "httpd-foreground",
       "Args": [],
       "State": {
           "Status": "running",
           "Running": true,
           "Paused": false,
           "Restarting": false,
           "OOMKilled": false,
           "Dead": false,
           "Pid": 5275,
           "ExitCode": 0,
           "Error": "",
           "StartedAt": "2022-08-07T09:22:19.792763407Z",
           "FinishedAt": "0001-01-01T00:00:00Z"
       },
  //连接到正在运行的容器
 [root@localhost ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS          PORTS     NAMES
1027b6de945c   httpd     "httpd-foreground"   13 minutes ago   Up 13 minutes   80/tcp    nifty_swanson
//在另外一个端口上进行测试 
[root@localhost ~]# curl 172.17.0.2
<html><body><h1>It works!</h1></body></html>
[root@localhost ~]# docker attach 1027b6de945c  
172.17.0.1 - - [07/Aug/2022:09:41:21 +0000] "GET / HTTP/1.1" 200 45
^C[Sun Aug 07 09:42:09.329265 2022] [mpm_event:notice] [pid 1:tid 140598633487680] AH00491: caught SIGTERM, shutting down
[root@localhost ~]# 
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS                     PORTS     NAMES
1027b6de945c   httpd     "httpd-foreground"   19 minutes ago   Exited (0) 5 seconds ago             nifty_swanson
[root@localhost ~]# 
 //在正在运行的容器中运行命令
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS          PORTS     NAMES
1027b6de945c   httpd     "httpd-foreground"   22 minutes ago   Up 18 seconds   80/tcp    nifty_swanson
[root@localhost ~]# 
[root@localhost ~]# docker exec -it 1027b6de945c /bin/bash
root@1027b6de945c:/usr/local/apache2# 
root@1027b6de945c:/usr/local/apache2# ps
bash: ps: command not found
root@1027b6de945c:/usr/local/apache2# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs	modules
root@1027b6de945c:/usr/local/apache2# 
root@1027b6de945c:/usr/local/apache2# exit
exit
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED          STATUS         PORTS     NAMES
1027b6de945c   httpd     "httpd-foreground"   25 minutes ago   Up 3 minutes   80/tcp    nifty_swanson
[root@localhost ~]#

报错解决

安装docker时会出现的问题

[root@192 ~]# yum -y install docker-ce
CentOS-8.5.2111 - Base - mirrors.aliyun 639 kB/s | 4.6 MB     00:07    
CentOS-8.5.2111 - Extras - mirrors.aliy  79 kB/s |  10 kB     00:00    
CentOS-8.5.2111 - AppStream - mirrors.a 521 kB/s | 8.4 MB     00:16    
Docker CE Stable - x86_64                72 kB/s |  26 kB     00:00    
Error: 
ltered out by modular filtering
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

解决方法:

[root@192 ~]# yum -y install docker-ce --allowerasing		//加一个上面提示的一个命令就行了
Last metadata expiration check: 0:01:01 ago on Sun 07 Aug 2022 03:30:14 PM CST.
Dependencies resolved.
========================================================================
 Package              Arch   Version             Repository        Size
========================================================================
Installing:
 docker-ce            x86_64 3:20.10.17-3.el8    docker-ce-stable  22 M
Installing dependencies:

拉取自己仓库的镜像需要的配置

[root@localhost ~]# cd /etc/containers/
[root@localhost containers]# vim registries.conf
# of these registries, it should be added at the end of the list.
#
# # An array of host[:port] registries to try when pulling an unqualifie
d image, in order.

#unqualified-search-registries = ["registry.fedoraproject.org", "registr
y.access.redhat.com", "registry.centos.org", "docker.io"]
unqualified-search-registries = ["docker.io"]

[[registry]]
location = "6e5o0ntr.mirror.aliyuncs.com"
# # The "prefix" field is used to choose the relevant [[registry]] TOML 
table;
# # (only) the TOML table with the longest match for the input image nam
e
"registries.conf" 81L, 3998C written        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值