docker基础用法

本文介绍了Docker的基础知识,包括Docker的起源、思想、OCI&OCF标准,以及镜像与镜像仓库的关系。讨论了Docker的工作原理,强调其Client-Server结构和容器的生命周期。还涵盖了Docker的基本操作,如搜索、下载镜像,启动容器,以及安装Docker时使用加速器的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是docker

docker中的容器:
lxc --> libcontainer --> runC

docker简介:
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护

Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走.

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镜像与镜像仓库的关系

  • 镜像是静态的,而容器是动态的,容器有其生命周期,镜像与容器的关系类似于程序与进程的关系。镜像类似于文件系统中的程序文件,* 而容器则类似于将一个程序运行起来的状态,也即进程。所以容器是可以删除的,容器被删除后其镜像是不会被删除的。
  • 仓库:是存放镜像的场所,dockerhub是最大的开源仓库,可以通过docker search 查找所需镜像并通过docker pull拉取
  • 镜像:docker 真正的操作对象
  • 容器:docker run 启动镜像会变成容器,容器顶层为一个可操作层,修改不会影响镜像。每个镜像可以启动生成多个容器。

docker工作原理

  • Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问。
    Docker-Server接收到Docker-Client的指令,就会执行这个命令!

  • 当你启动或创建一个Docker容器时,只有容器内的激活进程运行时才能开始活动。如果开启一个daemonized进程,容器会立刻结束运行,因为该进程在前端不是激活状态。如果你在前端开启一个进程,容器能正常运行,直到该进程结束。这和其他的半虚拟化工具不同,其他的半虚拟化工具基本上在相同的主机上建立“正常的”虚拟服务器实例。即使前台进程未激活,这些实例也能正常运行。

docher基础

命令功能
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对象的低级信息
  • 搜索镜像
[root@docker ~]# docker search kali
NAME                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
kalilinux/kali-rolling                 Official Kali Linux image (weekly snapshot o…   303                  
kalilinux/kali                         Image built from the last official release      76                   
linuxkonsult/kali-metasploit           Kali base image with metasploit                 71                   [OK]
booyaabes/kali-linux-full              Kali image with kali-linux-full metapackage …   31                   [OK]
  • 下载镜像
[root@docker ~]# docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
33847f680f63: Already exists 
d74938eee980: Pull complete 
963cfdce5a0c: Pull complete 
8d5a3cca778c: Pull complete 
e06a573b193b: Pull complete 
Digest: sha256:61e49dd08a51d6fc421ed257bd8eb461cf2d48269d9ab2b4ff5d4c69826c3c9c
Status: Downloaded newer image for httpd:latest
docker.io/library/httpd:latest
  • 查看镜像
[root@docker ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
httpd        latest    73b8cfec1155   5 days ago   138MB 
  • 查看本地容器进程
查看正在运行的容器进程
[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

查看正在运行的容器进程(包括死的)
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS         PORTS                                   NAMES
6f1881da8c86   httpd     "httpd-foreground"   6 seconds ago   Up 5 seconds   0.0.0.0:9000->80/tcp, :::9000->80/tcp   httpd
  • 容器启动
docker run 选项 容器 命令 
选项:
		-i:启动一个可交互容器,并持续打开标准输出
		-t:表示使用终端关联到容器的标准输入输出上
		-d:将容器放在后台执行
		-rm:删除容器
		--name:指定一个名称
        -p:指定端口
        -v:挂载目录

docker rm $(docker ps -aq)  #删除所有容器
docker stop $(docker ps -aq)  #停止所有容器
        
[root@docker ~]# docker run -p 9000:80 -d --name httpd httpd
6f1881da8c8661395e542f5fc43638f92ebeeb82ff0d55b31bc817697b7835aa

[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED              STATUS              PORTS                                   NAMES
6f1881da8c86   httpd     "httpd-foreground"   About a minute ago   Up About a minute   0.0.0.0:9000->80/tcp, :::9000->80/tcp   httpd

停止容器
[root@docker ~]# docker stop httpd
httpd
[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND              CREATED              STATUS                     PORTS     NAMES
6f1881da8c86   httpd     "httpd-foreground"   About a minute ago   Exited (0) 8 seconds ago             httpd

启动容器
[root@docker ~]# docker start httpd
httpd
[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS         PORTS                                   NAMES
6f1881da8c86   httpd     "httpd-foreground"   2 minutes ago   Up 2 seconds   0.0.0.0:9000->80/tcp, :::9000->80/tcp   httpd

重启容器
[root@docker ~]# docker restart httpd
httpd
[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND              CREATED         STATUS         PORTS                                   NAMES
6f1881da8c86   httpd     "httpd-foreground"   4 minutes ago   Up 5 seconds   0.0.0.0:9000->80/tcp, :::9000->80/tcp   httpd

docker安装

配置yum
[root@docker ~]# cd /etc/yum.repos.d/
[root@docker yum.repos.d]# vim docker-ce.repo 
[Docker-ce]
name=Docker-ce
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/   
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

安装和启动
yum -y install docker-ce
systemctl start docker
  • docker加速
    这里只是列子,具体用的是阿里云的加速
[root@docker ~]# cd /etc/docker/
[root@docker docker]# ls
key.json
[root@docker docker]# vim daemon.json
{
        "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]    这里是阿里云加速器地址
} 

[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl restart docker
[root@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: docker
 ID: YHYS:DCPP:L666:7UCA:LH3F:RS3Q:62RZ:T3HS:CO6W:J7VC:6ZY5:T523
 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://docker.mirrors.ustc.edu.cn/"   这里显示的是自己的加速地址就说明成功
 Live Restore Enabled: false       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值