概述
Docker是什么?
Docker是一个在2013年开源的应用程序,并且是一个基于go语言编写的PAAS服务。
Docker最早采用LXC技术,之后改为自己研发并开源的runc技术运行容器。
Docker相比虚拟机的交付速度更快,资源消耗更低,Docker采用客户端、服务端架构,使用远程api来 管理和创建Docker容器。
Docker的三大理念是build(构建)、ship(运输)、run(运行)。
Docker遵从apache2.0协议,并通过namespace、cgroup等技术来提供容器的资源隔离与安全保障。
资源利用率更高:一台物理机可以运行数百个容器,但一般只能运行数十个虚拟机
开销更小:不需要启动单独的虚拟机占用硬件资源
启动速度更快:可以在数秒内完成启动
Docker的组成
Docker主机 host:一个物理机或者虚拟机,用于运行docker服务进程和容器
Docker服务端 Server:Docker守护进程,运行docker容器
Docker客户端 client:客户端使用docker命令或其他工具调用docker api
在我们的实验环境中 以上三者三合一 都是我们的Centos服务器
Docker仓库 registry:保存镜像的仓库,类似于git或svn这样的版本控制器
Docker镜像 images:镜像可以理解为创建实例使用的模板
Docker容器 container:容器是从镜像生成对外提供服务的一个或一组服务
以上三者构成了我们的整个docker的体系
docker安装及基础命令
安装docker-ce 以及客户端
[root@docker-server ~]# yum install wget.x86_64 -y
[root@docker-server ~]# rm -rf /etc/yum.repos.d/*
[root@docker-server ~]# wget -O /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@docker-server ~]# wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@docker-server ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@docker-server ~]# yum install docker-ce -y
启动docker
[root@docker-server ~]# systemctl enable docker.service
Created symlink from /etc/systemd/system/multiuser.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@docker-server ~]# systemctl start docker.service
[root@centos7-server yum.repos.d]# systemctl status docker
//查看docker状态
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: di
Active: active (running) since Sat 2022-02-12 01:20:42 EST; 6s ago
Docs: https://docs.docker.com
Main PID: 10044 (dockerd)
Tasks: 9
Memory: 36.1M
CGroup: /system.slice/docker.service
└─10044 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.
确认docker版本
[root@centos7-server yum.repos.d]# docker version
Client: Docker Engine - Community
Version:
20.10.12
API version:
1.41
Go version:
go1.16.12
Git commit:
e91ed57
Built:
Mon Dec 13 11:45:41 2021
OS/Arch:
linux/amd64
Context:
default
Experimental:
true
Server: Docker Engine - Community
Engine:
Version:
20.10.12
API version:
1.41 (minimum version 1.12)
Go version:
go1.16.12
Git commit:
459d0df
Built:
Mon Dec 13 11:44:05 2021
OS/Arch:
linux/amd64
Experimental:
false
containerd:
Version:
1.4.12
GitCommit:
7b11cfaabd73bb80907dd23182b9347b4245eb5d
runc:
Version:
1.0.2
GitCommit:
v1.0.2-0-g52b36a2
docker-init:
Version:
0.19.0
GitCommit:
de40ad0
通过docker来查找仓库当中名字叫做httpd的镜像(image)
[root@centos7-server yum.repos.d]# docker
search
httpd
NAME
DESCRIPTION
AUTOMATED
httpd
The Apache HTTP Server Project
centos/httpd-24-centos7
Platform for running Apache httpd 2.4 or bui
centos/httpd
[OK]
arm32v7/httpd
The Apache HTTP Server Project
hypoport/httpd-cgi
httpd-cgi
[OK]
solsson/httpd-openidc
mod_auth_openidc on official httpd image, ve
[OK]
publici/httpd
httpd:latest
[OK]
clearlinux/httpd
httpd HyperText Transfer Protocol (HTTP) ser
inanimate/httpd-ssl
A play container with httpd, ssl enabled, an
[OK]
manageiq/httpd
Container with httpd, built on CentOS for Ma
[OK]
centos/httpd-24-centos8
dariko/httpd-rproxy-ldap
Apache httpd reverse proxy with LDAP authent
[OK]
lead4good/httpd-fpm
httpd server which connects via fcgi proxy h
[OK]
dockerpinata/httpd
jonathanheilmann/httpd-alpine-rewrite
httpd:alpine with enabled mod_rewrite
[OK]
interlutions/httpd
httpd docker image with debian-based config
[OK]
e2eteam/httpd
19022021/httpd-connection_test
This httpd image will test the connectivity
appertly/httpd
Customized Apache HTTPD that uses a PHP-FPM
[OK]
signiant/httpd
httpd (apache2) base container with a custom
[OK]
ysli/httpd
Httpd for DeepWeb
[OK]
manageiq/httpd_configmap_generator
Httpd Configmap Generator
[OK]
itsziget/httpd24
Extended HTTPD Docker image based on the off
[OK]
trollin/httpd
amd64/httpd
The Apache HTTP Server Project
当然我们也可以通过上docker-hub
docker的官方网页仓库来查找自己想要的镜像
https://hub.docker.com/
接下来可以通过命令来下载最新的httpd的镜像
[root@centos7-server yum.repos.d]# docker
pull httpd:latest
latest: Pulling from library/httpd
5eb5b503b376: Pull complete
a43a76ccc967: Pull complete
942bd346e7f7: Pull complete
cdb155854ae6: Pull complete
10c4d45228bf: Pull complete
Digest: sha256:5cc947a200524a822883dc6ce6456d852d7c5629ab177dfbf7e38c1b4a647705
Status: Downloaded newer image for httpd:latest
docker.io/library/httpd:latest
通过以下命令可以查看当前系统已经下载的镜像
[root@centos7-server yum.repos.d]# docker
images
REPOSITORY
TAG
IMAGE ID
CREATED
SIZE
httpd
latest
a8ea074f4566
2 weeks ago
144MB
接下来可以运行该镜像 使之成为一个CONTAINER 容器
[root@centos7-server yum.repos.d]# docker run
-d
-p
80:80
httpd
0f43c2e33fe5640e7828f5fd0a050c263decfc8516ec2e0656f85d5863d9d807
接下来可以查看当前正在运行的容器
[root@centos7-server yum.repos.d]# docker ps
CONTAINER ID
IMAGE
COMMAND
CREATED
STATUS
PORTS
NAMES
0f43c2e33fe5
httpd
"httpd-foreground"
10 minutes ago
Up 10 minutes
0.0.0.0/tcp
trusting_sanderson
此时因为我们是做了 容器的80端口 映射给宿主机的80端口,所以直接访问宿主机80端口就可以直接访问到该容器的httpd主页
如何对主页进行修改,我们不能在宿主机上对其进行修改,所以我们需要进入这个容器
[root@centos7-server yum.repos.d]# docker
exec
-it
0f43c2e33fe5
bash
root@0f43c2e33fe5:/usr/local/apache2#
root@0f43c2e33fe5:/usr/local/apache2#
root@0f43c2e33fe5:/usr/local/apache2#
root@0f43c2e33fe5:/usr/local/apache2#
注意上面的container ID 是docker ps显示的id
此时会发现已经进入到root@0f43c2e33fe5 已经在容器当中了
root@0f43c2e33fe5:/usr/local/apache2# ls
bin build cgi-bin conf error htdocs icons include logs modules
通过ls简单查看当前容器的目录结构
一般来说,apache的主页都叫index.html 所以我们可以查找一下这个主页
root@0f43c2e33fe5:/usr/local/apache2# find
/
-name
index.html
find: '/proc/1/map_files': Operation not permitted
find: '/proc/9/map_files': Operation not permitted
find: '/proc/10/map_files': Operation not permitted
find: '/proc/11/map_files': Operation not permitted
find: '/proc/93/map_files': Operation not permitted
find: '/proc/121/map_files': Operation not permitted
find: '/proc/129/map_files': Operation not permitted
/usr/local/apache2/htdocs/index.html
此时我们发现 在/usr/local/apache2/htdocs/下有一个这个文件
我们可以对此文件进行编辑 或者把已经完成的前端代码 放入当前目录 就可以完成网站的部署工作
可以查看该主页的内容
root@0f43c2e33fe5:/usr/local/apache2/htdocs# cat
index.html
<html><body><h1>It works!</h1></body></html>
最后一定要注意 我们需要返回宿主机 ,才能对容器进行停止操作
root@0f43c2e33fe5:/usr/local/apache2/htdocs# exit
exit
关闭当前容器
[root@centos7-server yum.repos.d]# docker
stop
0f43c2e33fe5
0f43c2e33fe5
[root@centos7-server yum.repos.d]# docker ps
-a
CONTAINER ID
IMAGE
COMMAND
CREATED
STATUS
0f43c2e33fe5
httpd
"httpd-foreground"
11 minutes ago
Exited (0) 18 seconds ng_sanderson
docker ps -a
这个命令可以查看尚未运行的容器 显示是Exited状态 表明这个容器已经被关掉了
最后
以上就是时尚羽毛为你收集整理的Docker、docker安装及基础命令的全部内容,希望文章能够帮你解决Docker、docker安装及基础命令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复