标签:httpd 基础 用法 172.17 Docker ID root docker localhost
docker基础用法
什么是docker
docker中的容器:
- lxc --> libcontainer --> runC
OCI&OCF
Open Container-initiative(开放容器组织)
-
由Linux基金会主导于2015年6月创立
-
旨在围绕容器格式和运行时制定一个开放的工业化标准
-
contains two specifications
- the Runtime Specification(运行时规范)(runtime-spec)
- the Image Specification(镜像规范)(image-spec)
OCF
Open Container Format (打开容器格式)
runC is a CLI tool for spawning and running containers according to the OCI specification (runC是一个CLI工具,用于根据OCI规范生成和运行容器)
-
Containers are started as a child process of runC and can be embedded
into various other systems without having to run a daemon(容器是以runC为子进程的方式启动,并且可以被其他的系统引用,不需要启动为守护模式进程) -
runC is built on libcontainer, the same container technology powering
millions of Docker Engine installations
(runC 可以构建我们的容器,并且可以被数以百万的存储引擎使用)
docker提供了一个专门容纳容器镜像的站点:https://hub.docker.com
docker架构
docker镜像与镜像仓库的关系
为什么镜像仓库名字是Registry而不是repository?在docker中仓库的名字是以应用的名称取名的。
镜像是静态的,而容器是动态的,容器有其生命周期,镜像与容器的关系类似于程序与进程的关系。镜像类似于文件系统中的程序文件,而容器则类似于将一个程序运行起来的状态,也即进程。所以容器是可以删除的,容器被删除后其镜像是不会被删除的。
安装及使用docker
docker安装
获取yum源
[root@localhost yum.repos.d]# cat docker-ce.repo
[docker-ce]
name=docker-ce
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
enabled=1
//过滤出来docker
[root@localhost yum.repos.d]# yum list all |grep docker
docker-ce 19 kB/s | 14 kB 00:00
containerd.io.x86_64 1.4.8-3.1.el8 docker-ce
docker-ce.x86_64 3:20.10.7-3.el8 docker-ce
docker-ce-cli.x86_64 1:20.10.7-3.el8 docker-ce
docker-ce-rootless-extras.x86_64 20.10.7-3.el8 docker-ce
docker-scan-plugin.x86_64 0.8.0-3.el8 docker-ce
pcp-pmda-docker.x86_64 5.3.1-3.el8 appstream
podman-docker.noarch 3.1.0-0.13.module_el8.5.0+733+9bb5dffa appstream
建立缓存
[root@localhost ~]# yum makecache
CentOS Stream 8 - AppStream 7.8 kB/s | 4.4 kB 00:00
CentOS Stream 8 - BaseOS 5.8 kB/s | 3.9 kB 00:00
CentOS Stream 8 - Extras 3.3 kB/s | 3.0 kB 00:00
docker-ce 12 kB/s | 3.5 kB 00:00
元数据缓存已建立。
如果安装失败,尝试下面的用法。
(尝试在命令行中添加 '--allowerasing' 来替换冲突的软件包 或 '--skip-broken' 来跳过无法安装的软件包 或 '--nobest' 来不只使用软件包的最佳候选)
[root@localhost ~]# yum -y --allowerasing install docker-ce
启动docker
[root@localhost ~]# systemctl enable --now docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
[root@localhost ~]# ls /etc/docker/
key.json
//这个启动服务之后,会自动创建。
docker加速
docker-ce的配置文件是/etc/docker/daemon.json,此文件默认不存在,需要我们手动创建并进行配置,而docker的加速就是通过配置此文件来实现的。
docker的加速有多种方式:
- docker cn
- 中国科技大学加速器
- 阿里云加速器(需要通过阿里云开发者平台注册帐号,免费使用个人私有的加速器)
[root@localhost docker]# cat daemon.json
{
"registry-mirrors": ["https://4294sonj.mirror.aliyuncs.com"]
}
[root@localhost docker]# systemctl daemon-reload
[root@localhost docker]# systemctl restart docker
//添加完成加速器之后,重新读取一下,在重启docker
[root@localhost docker]# 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.5.1-docker)
scan: Docker Scan (Docker Inc., v0.8.0)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 20.10.7
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: 7eba5930496d9bbe375fdf71603e610ad737d2b2
runc version: v1.0.0-0-g84113ee
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
Total Memory: 1.748GiB
Name: localhost.localdomain
ID: DS7L:DIOS:HCTW:IKJP:2Q5Q:C2BH:AVR5:QASG:4QD2:B5ZU:E3OG:FTAZ
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://4294sonj.mirror.aliyuncs.com/
Live Restore Enabled: false
[root@localhost docker]# docker version
//查看版本信息
Client: Docker Engine - Community
Version: 20.10.7
API version: 1.41
Go version: go1.13.15
Git commit: f0df350
Built: Wed Jun 2 11:56:24 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.7
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: b0f5bc3
Built: Wed Jun 2 11:54:48 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.8
GitCommit: 7eba5930496d9bbe375fdf71603e610ad737d2b2
runc:
Version: 1.0.0
GitCommit: v1.0.0-0-g84113ee
docker-init:
Version: 0.19.0
GitCommit: de40ad0
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@localhost ~]# docker search busybox
//在docker hub上面查找镜像
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
busybox Busybox base image. 2300 [OK]
progrium/busybox 70 [OK]
radial/busyboxplus Full-chain, Internet enabled, busybox made f… 41 [OK]
[root@localhost ~]# docker pull busybox
//拉取镜像 如果后面没有跟版本号,就会默认拉取最新版本的。
Using default tag: latest
latest: Pulling from library/busybox
b71f96345d44: Pull complete
Digest: sha256:0f354ec1728d9ff32edcd7d1b8bbdfc798277ad36120dc3dc683be44524c8b60
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest
[root@localhost ~]# docker images
//查看拉取的镜像放的位置
//列出镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest 69593048aa3a 7 weeks ago 1.24MB
[root@localhost ~]# docker create httpd
//创建一个容器
//创建一个容器的时候,它会自动的去docker hub拉取你创建的容器的镜像
Unable to find image 'httpd:latest' locally
latest: Pulling from library/httpd
33847f680f63: Pull complete
d74938eee980: Pull complete
963cfdce5a0c: Pull complete
8d5a3cca778c: Pull complete
e06a573b193b: Pull complete
Digest: sha256:61e49dd08a51d6fc421ed257bd8eb461cf2d48269d9ab2b4ff5d4c69826c3c9c
Status: Downloaded newer image for httpd:latest
07a2d3de25710cc5103ed8c2cc308939cd03bcef5d97f70e131eb135ccddbf76
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest 73b8cfec1155 5 days ago 138MB
busybox latest 69593048aa3a 7 weeks ago 1.24MB
[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
07a2d3de2571 httpd "httpd-foreground" 2 minutes ago Created condescending_shockley
[root@localhost ~]# docker start 07a2d3de2571
// 使用id来控制容器
07a2d3de2571
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07a2d3de2571 httpd "httpd-foreground" 5 minutes ago Up About a minute 80/tcp condescending_shockley
[root@localhost ~]# docker inspect 07a2d3de2571
//返回容器对象低级类的信息
[
{
"Id": "07a2d3de25710cc5103ed8c2cc308939cd03bcef5d97f70e131eb135ccddbf76",
"Created": "2021-07-27T12:36:42.025892381Z",
"Path": "httpd-foreground",
"Args": [],
"State": {
"Status": "running",
"Running": true,
......此处省略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
<html><body><h1>It works!</h1></body></html>
[root@localhost ~]# docker stop 07a2d3de2571
//停止docker
07a2d3de2571
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]# docker start 07a2d3de2571
07a2d3de2571
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07a2d3de2571 httpd "httpd-foreground" 13 minutes ago Up 1 second 80/tcp condescending_shockley
[root@localhost ~]# docker restart 07a2d3de2571
//重合docker
07a2d3de2571
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07a2d3de2571 httpd "httpd-foreground" 14 minutes ago Up 1 second 80/tcp condescending_shockley
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
07a2d3de2571 httpd "httpd-foreground" 15 minutes ago Up About a minute 80/tcp condescending_shockley
[root@localhost ~]# docker rm -f 07a2d3de2571
//删除镜像,不介意直接删除,首先要把docker停止,或者使用kill,在使用rm -f
07a2d3de2571
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]# docker run httpd
//直接拉取镜像,并启动
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
[Tue Jul 27 12:56:32.824380 2021] [mpm_event:notice] [pid 1:tid 140350932755584] AH00489: Apache/2.4.48 (Unix) configured -- resuming normal operations
[Tue Jul 27 12:56:32.824574 2021] [core:notice] [pid 1:tid 140350932755584] AH00094: Command line: 'httpd -D FOREGROUND'
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9864d99dee59 httpd "httpd-foreground" 6 seconds ago Up 5 seconds 80/tcp heuristic_booth
[root@localhost ~]# docker inspect 9864d99dee59
......
"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
<html><body><h1>It works!</h1></body></html>
172.17.0.1 - - [27/Jul/2021:12:58:55 +0000] "GET / HTTP/1.1" 200 45
//ctrl +c 打断之后,httpd 就会停止
^C[Tue Jul 27 12:59:52.417572 2021] [mpm_event:notice] [pid 1:tid 140350932755584] AH00491: caught SIGTERM, shutting down
[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
9864d99dee59 httpd "httpd-foreground" 3 minutes ago Exited (0) 12 seconds ago heuristic_booth
当使用docker run 时,服务是在前台,停止服务之后,再次重启,服务就会运行在后台
[root@localhost ~]# docker start 9864d99dee59
9864d99dee59
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9864d99dee59 httpd "httpd-foreground" 5 minutes ago Up 2 seconds 80/tcp heuristic_booth
再次使用docker run命令,虽然服务相同,但是不会冲突
访问的ip会自动继承
[root@localhost ~]# docker run -d httpd
43434798b77b66a8c437e91f714b60660979cdaf88ec0ea20621539303078b55
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
43434798b77b httpd "httpd-foreground" 6 seconds ago Up 5 seconds 80/tcp awesome_aryabhata
9864d99dee59 httpd "httpd-foreground" 8 minutes ago Up 2 minutes 80/tcp heuristic_booth
[root@localhost ~]# curl 172.17.0.3
<html><body><h1>It works!</h1></body></html>
[root@localhost ~]# curl 172.17.0.3
<html><body><h1>It works!</h1></body></html>
[root@localhost ~]# curl 172.17.0.3
<html><body><h1>It works!</h1></body></html>
[root@localhost ~]# curl 172.17.0.3
<html><body><h1>It works!</h1></body></html>
[root@localhost ~]# curl 172.17.0.3
<html><body><h1>It works!</h1></body></html>
获取容器的日志
[root@localhost ~]# docker logs 43434798b77b
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
[Tue Jul 27 13:04:43.341505 2021] [mpm_event:notice] [pid 1:tid 140104083575936] AH00489: Apache/2.4.48 (Unix) configured -- resuming normal operations
[Tue Jul 27 13:04:43.341660 2021] [core:notice] [pid 1:tid 140104083575936] AH00094: Command line: 'httpd -D FOREGROUND'
172.17.0.1 - - [27/Jul/2021:13:04:56 +0000] "GET / HTTP/1.1" 200 45
172.17.0.1 - - [27/Jul/2021:13:06:59 +0000] "GET / HTTP/1.1" 200 45
172.17.0.1 - - [27/Jul/2021:13:07:01 +0000] "GET / HTTP/1.1" 200 45
172.17.0.1 - - [27/Jul/2021:13:07:01 +0000] "GET / HTTP/1.1" 200 45
172.17.0.1 - - [27/Jul/2021:13:07:02 +0000] "GET / HTTP/1.1" 200 45
//进入容器,如果退出,容器就退出
[root@localhost ~]# docker attach 43434798b77b
172.17.0.1 - - [27/Jul/2021:13:11:09 +0000] "GET / HTTP/1.1" 200 45
^C[Tue Jul 27 13:12:25.525288 2021] [mpm_event:notice] [pid 1:tid 140104083575936] AH00491: caught SIGTERM, shutting down
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9864d99dee59 httpd "httpd-foreground" 15 minutes ago Up 10 minutes 80/tcp heuristic_booth
//进入容器,退出之后,容器依然在运行
[root@localhost ~]# docker exec -it 9864d99dee59 /bin/bash
root@9864d99dee59:/usr/local/apache2# pwd
/usr/local/apache2
root@9864d99dee59:/usr/local/apache2#
root@9864d99dee59:/usr/local/apache2# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@9864d99dee59:/usr/local/apache2# exit
exit
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9864d99dee59 httpd "httpd-foreground" 18 minutes ago Up 12 minutes 80/tcp heuristic_booth
docker event state
docker的工作原理
- Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问。
- Docker-Server接收到Docker-Client的指令,就会执行这个命令
标签:httpd,基础,用法,172.17,Docker,ID,root,docker,localhost 来源: https://blog.csdn.net/z07121/article/details/119150382
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。