我的docker笔记

本文详细介绍了Docker的基础知识,包括镜像(image)、容器(container)和仓库(repository)的概念。讲解了如何在CentOS 7上安装Docker,以及Docker的常用命令,如下载、搜索、启动和管理镜像及容器。还提到了Docker的联合文件系统和快速启动特性,并提供了阿里云镜像加速的配置方法。

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

镜像(image)

1.从远程仓库下载
2.朋友拷贝给你
自己制作一个镜像DockerFile
原理:联合文件系统:UnionFS系统,分层、轻量级并且高性能文件系统,支持文件系统的修改作为一次提交一层层叠加,将不同目录挂在在同一个虚拟文件系统下,镜像可以通过分层来进行继承。

特性:一次同时加载多个文件系统,只能看到一个文件系统,联合加载会把隔层文件系统叠加起来,最终文件系统会包含所有的底层文件和目录。底层共用。
黑屏—》系统:bootfs
rootfs:Ubuntu,centos
虚拟机分钟级启动,容器秒级启动
https://hub.docker.com/

容器(container)

通过镜像来创建

仓库(repository)

安装docker

# 系统内核版本
[root@localhost ~]# uname -r
3.10.0-957.1.3.el7.x86_64
# 系统版本
[root@localhost ~]# cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

安装
帮助文档:https://docs.docker.com/get-docker/

# 1.卸载旧的版本
$  yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
# 2.需要的安装包
yum install -y yum-utils
①[root@localhost roo]# yum install -y yum-utils
这一步可以yum可能报错,如果报错了,执行下面的语句,没问题这不用执行
[root@localhost roo]# rm -f /var/run/yum.pid
②也可能是网络未连接
ping baidu.com
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33 

TYPE=“Ethernet”
PROXY_METHOD=“none”
BROWSER_ONLY=“no”
BOOTPROTO=“static”
DEFROUTE=“yes”
IPV4_FAILURE_FATAL=“no”
IPV6INIT=“yes”
IPV6_AUTOCONF=“yes”
IPV6_DEFROUTE=“yes”
IPV6_FAILURE_FATAL=“no”
IPV6_ADDR_GEN_MODE=“stable-privacy”
NAME=“ens33”
UUID=“047dc553-2309-4a96-8a63-0c04b33c1a58”
DEVICE=“ens33”
ONBOOT=“yes”
IPADDR=“192.168.93.129”
NETMASK=“255.255.255.0”
GATEWAY=“192.168.93.2”
ZONE=“public”
DNS1=192.168.93.2

systemctl restart network(或 service network restart)

# 3.设置镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum软件包索引: yum makecache fast
# 4.安装docker
yum install docker-ce docker-ce-cli containerd.io
# 5.启动docker
systemctl start docker
# 6. 查看是否安装成功
docker --version

# 7.执行hello-world
docker run hello-world
# 8.查看一下镜像
docker images

# 9.卸载
    ①、卸载依赖 ce社区版
    yum remove docker-ce docker-ce-cli containerd.io
    ②、删除镜像/容器等,也是docker默认工作路径
    rm -rf /var/lib/docker
    
# 10.阿里云加速,登录阿里云,找到镜像加速地址
	#创建个文件
 	mkdir -p /etc/docker
 	# 编写配置文件
	tee /etc/docker/daemon.json <<-'EOF'
    {
      "registry-mirrors": ["https://9xj7kbt8.mirror.aliyuncs.com"]
    }
    EOF
    # 重新加载下
 	systemctl daemon-reload
 	# 重启下
 	systemctl restart docker

地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

docker是如何工作的:

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

docker不须要像虚拟机一样重新加载一个操作系统的内核。OS虚拟化

Docker的常用命令

docker version   # 显示 版本信息
docker info 	# 显示系统信息,包括镜像,容器数量
docker help		# 帮助命令

帮助文档地址 :docs.docker.com/engine/reference/commandline
镜像命令
docker images --help

[root@localhost docker]# docker images 
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    bf756fb1ae65   12 months ago   13.3kB

#解释
REPOSITORY 镜像仓库源
TAG 镜像标签
IMAGE ID 镜像id
CREATED 镜像创建时间
SIZE 镜像大小
#可选项
-a , --all #列出所有镜像
-q, --quiet #只显示镜像id

  • docker search 搜索镜像:hub.docker.com
    在这里插入图片描述
docker search mysql	# 搜索mysql
docker search mysql --filter=STARS=3000   # 过滤,搜索镜像STARS 大于3000的
[root@localhost docker]# docker search mysql --filter=STARS=3000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   10380     [OK]       
mariadb   MariaDB is a community-developed fork of MyS…   3848      [OK]  
  • docker pull 下载镜像

下载镜像 docker pull 镜像名称 [:tag]

[root@localhost docker]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql		#不写tag 默认就是latest
a076a628af6f: Pull complete 		#分层下载,docker image 核心,联合文件系统
f6c208f3f991: Pull complete 
88a9455a9165: Pull complete 
406c9b8427c6: Pull complete 
7c88599c0b25: Pull complete 
25b5c6debdaf: Pull complete 
43a5816f1617: Pull complete 
1a8c919e89bf: Pull complete 
9f3cf4bd1a07: Pull complete 
80539cea118d: Pull complete 
201b3cad54ce: Pull complete 
944ba37e1c06: Pull complete 
Digest: sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8c 	#签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest	#真实地址
[root@localhost docker]# docker pull mysql:5.7
  • docker rmi - f 容器id # 删除镜像,【remove image】

删除所有:docker rmi -f $(docker images -aq)

[root@localhost docker]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
mysql         5.7       a70d36bc331a   2 days ago      449MB
mysql         latest    c8562eaf9d81   2 days ago      546MB
hello-world   latest    bf756fb1ae65   12 months ago   13.3kB
[root@localhost docker]# docker rmi -f bf756fb1ae65
Untagged: hello-world:latest
Untagged: hello-world@sha256:31b9c7d48790f0d8c50ab433d9c3b7e17666d6993084c002c2ff1ca09b96391d
Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
mysql        5.7       a70d36bc331a   2 days ago   449MB
mysql        latest    c8562eaf9d81   2 days ago   546MB

容器命令

新建容器并启动

docker run [可选参数] image 
# 参数说明
--name="Name"	容器名字 tomcat01 tomcat02 ,用来区分容器
-d 		后台运行
-it 	使用交互方式运行,
-p 		制定容器端口 -p 8080:8080
	-p ip:主机端口:容器端口(常用)
	-p 容器端口

[root@localhost docker]# docker run -it centos /bin/bash 	# 启动并进入容器
[root@f6145a808475 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@f6145a808475 /]# exit		# 退出centos
exit
[root@localhost docker]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mysql        5.7       a70d36bc331a   2 days ago    449MB
mysql        latest    c8562eaf9d81   2 days ago    546MB
centos       latest    300e315adb2f   6 weeks ago   209MB
[root@localhost docker]# docker ps 	# 当前正在运行的容器
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost docker]# docker ps -a	 # 当前正在运行的容器+历史运行过的容器
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS                      PORTS     NAMES
f6145a808475   centos         "/bin/bash"   2 minutes ago   Exited (0) 43 seconds ago             naughty_wing
11de857e482a   bf756fb1ae65   "/hello"      23 hours ago    Exited (0) 23 hours ago               recursing_cray
[root@localhost docker]# 

列出所有容器
docker ps -a # 当前正在运行的容器+历史运行过的容器
docker ps # 当前正在运行的容器
-n=? #显示最近创建容器
-q # 显示容器运行编号

[root@localhost docker]# docker ps -aq
f6145a808475
11de857e482a
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS                     PORTS     NAMES
f6145a808475   centos         "/bin/bash"   8 minutes ago   Exited (0) 7 minutes ago             naughty_wing
11de857e482a   bf756fb1ae65   "/hello"      23 hours ago    Exited (0) 23 hours ago              recursing_cray
[root@localhost docker]# docker ps -a -n=1
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
f6145a808475   centos    "/bin/bash"   8 minutes ago   Exited (0) 7 minutes ago             naughty_wing
[root@localhost docker]# 

退出容器
exit # 直接容器停止并退出
Ctrl+P+Q # 容器不停止退出
删除容器
docker rm 容器id # 删除指定容器,不能删除正在运行的容器,如果要强制删除 rm -f
docker rmi 容器id # 删除镜像,不能删除正在运行的镜像,需要先docker stop 容器id

docker rm -f $(docker ps -aq) # 删除所有容器
docker ps -a -q |xargs docker rm # 删除所有容器

启动和停止容器的操作

docker start 容器id # 启动容器
docker restart 容器id #重启
docker stop 容器id # 停止当前正在运行的容器
docker kill 容器id # 强制停止当前容器

常用其他命令

后台启动容器

> docker run -d 镜像名
[root@localhost docker]# docker run -d centos
c0b4c16af1c2475c19e1a7dbb40805cbd5124ef51cc64149ddfce3f21ecd489d
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
> 常见坑 :docker 容器使用后台运行,必须有一个前台进程,docker发现没有应用,会自动停止
> Nginx,容器启动后,发现没有提供服务,就会立即停止,就没有程序了

查看日志

-tf  	#显示日志
-- tail number 	#要显示ride条数
# 显示制定行数的日志
[root@localhost docker]# docker logs -f -t --tail 10 73eaf48a143c

查看容器进程信息

# docker top 容器id 
[root@localhost docker]# docker top 73eaf48a143c
UID             PID             PPID            C               STIME           TTY             TIME            CMD
root            63937           63915           0               10:14           pts/0           00:00:00        /bin/bash

查看镜像元数据
docker inspect 容器id

[root@localhost docker]# docker inspect 73eaf48a143c

进入当前正在运行的容器

# 命令
docker exec -it 容器id(或者name) bashShell			#进入容器后开启一个新的终端,可以在里面操作(常用)

[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED             STATUS             PORTS     NAMES
73eaf48a143c   centos    "/bin/bash"   About an hour ago   Up About an hour             angry_franklin
[root@localhost docker]# docker exec -it 73eaf48a143c /bin/bash
[root@73eaf48a143c /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
方式二:
docker attach 容器id  			#进入容器正在执行的终端,不会启动新的进程

从容器内拷贝文件到主机

docker cp 容器id :/home/test.txt /home

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值