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 search | Search the Docker Hub for images |
docker pull | Pull an image or a repository from a registry |
docker images | List images |
docker create | Create a new conntainer |
docker start | Start one or more stopped containers |
docker run | Run a command in a new container |
docker attach | Attach to a runninng container |
docker ps | List containers |
docker logs | Fetch the logs of a container |
docker restart | Restart a container |
docker stop | Stop one or more running containers |
docker kill | Kill one or more running containers |
docker rm | Remove onne or more containers |
docker exec | Run a command in a running container |
docker info | Display system-wide information |
docker inspect | Return 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