刘永浩记_Docker帮助文档

本文介绍了Docker的安装步骤,包括查看系统支持、常用命令如运行、搜索、下载和删除镜像,创建和管理容器,以及仓库的概念。重点讲解了容器数据卷的使用,强调数据同步的重要性。

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

Docker安装

Docker的基本组成

客户端 -------服务器--------仓库

镜像(image):

docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,如tomcat镜像===>run ===>容器(提供服务),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。

容器(container):

Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的。

启动、停止、删除、基本命令。

目前就可以把这个容器理解为就是一个简易的linux系统

仓库(repository):

仓库就是存放镜像的地方

仓库分为公有仓库和私有仓库

Docker Hub(默认是国外的)

阿里云…都有容器服务器(配置镜像加速!)

安装

查看自己Linux的系统

Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal

Docker的常用命令

run的运行流程

开始—>Docker会在本机寻找镜像---->判断本机是否有这个镜像------>如果有,使用这个镜像运行

​ -------->如果没有,去DockerHub上下载,没找到的话则报错。

帮助命令

可以查看文档 https://docs.docker.com/engine/reference/

docker version   # 现实docker的基本信息
docker info      #查看docker的基本信息
docker --help #帮助命令

镜像命令

查看镜像

docker images        #查看所有本地的主机上的镜像
-a, --all            # 列出所有镜像
-q, --quiet          # 只显示镜像的id

#docker images  出现的列名的解释
# REPOSITORY  镜像的仓库源
# TAG         镜像的标签
# CRTEATED    镜像的创建时间
#SIZE         镜像的大小


搜索镜像

docker search 镜像名字    #搜索镜像

# 可选项,通过搜藏来过滤
--filter=STARS=3000      # 搜索出来的镜像就是STARS大于3000的。

下载镜像

docker pull 镜像名[:tag]                    # 下载镜像 后面是版本 如果不写tag,默认就是latest

docker pull mysql:5.7                       # 指定下载5.7的版本

docker pull mysql
docker pull docker.io/library/mysql:latest  # 和上面的命令是等价的

删除镜像

docker rmi

docker rmi -f 容器id                   # 删除指定的镜像
docker rmi -f 容器id 容器id            # 删除多个指定的镜像
docker rmi -f $(docker images -aq)     #删除全部的镜像

容器命令

说明:我们有了镜像才可以创建容器,linux

# 下载镜像
docker pull centos   

新建容器并启动

docker run[可选参数] image /bin/bash

#参数说明
--name="Name"                #容器名字,用来区分容器
-d                           #后台方式运行
-it                          #使用交互方式运行,进入容器查看内容
-p			                #指定容器的端口 -p 8080:8080
	-p ip:主机端口:容器端口      # 指定主机端口和容器端口       ---------->常用的方式
	-p 容器端口               # 不往外面走了,只指定容器端口
	容器端口
-P			                #随机指定端口
 docker run --name=lyh_centos -it centos:7.5 /bin/bash
 # 名字为lyh_centos
 # 使用交互的方式
 # centos的版本是7.5
 #用bash方式运行
 -----------------------------这样就进入了容器,相当于又创建了一个虚拟机-----------------------
 dockeruser@gpu-Super-Server:~$ docker run --name=lyh_centos -it centos:7.5 /bin/bash
[root@a9529389dc6b /]# ls
bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

退出容器命令

exit         #从容器中退回主机
ctrl+p+q     #容器不停止推出

查看容器命令

docker ps      #显示正在运行的容器
docker ps -a   #显示所以的容器,包括不运行的
docker -n=?    #显示最近?个被创建的容器
docker ps -q   #只显示容器的编号
docker ps -aq   #只显示容器的编号,显示所有的

删除容器

docker rm 容器id                 #删除指定容器---不能删除正在运行的容器,强制删除用下面的
docker rm -f $(docker ps -aq)    #删除所有容器
docker -a -qlxargs docker rm     # linux删除所有容器

启动和停止容器

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

常用其他命令

后台启动容器
docker run -d image      #后台启用容器
-----------------------------------问题-----------------------------------
执行命令docker run -d centos   ,再用docker ps 发现centos停止了
#常见的坑,docker容器使用后台运行时,就必须要有一个前台进程,docker发现没有应用,就会自动停止
#nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

查看日志
docker logs -tf --tail 10 容器id    #显示十条该容器的日志
##使用 docker logs 命令查看容器的日志后,可以按下键盘上的 Ctrl + C 组合键来退出日志查看模式。
查看容器中的进程信息
docker top 容器id 

# UID是用户id  
#PID是副id #
#PPID是进程id

dockeruser@gpu-Super-Server:~$ docker top 868e835d6e0b

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
10000               7352                7333                0                   9月14                ?                   00:00:00            /bin/sh /harbor/entrypoint.sh
10000               7470                7352                0                   9月14                ?                   00:18:17            /harbor/harbor_core

查看容器信息
docker inspect 容器id
进入当前正在运行的容器
# 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置

# 命令  
docker exec -it 容器id bashShell  # 进入容器后开启一个新的终端,可以在里面操作(常用)
docker exec -it 容器id /bin/bash  #具体的例子

#另一种
docker attach 容器id /bin/bash  # 进入容器正在执行的终端,不会启动新的进程

从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的的主机路径  #注意,这个要在目的主机中写这个copy文件
docker cp 868e835d6e0b:/home/test.java /home 
#现在用的拷贝是一个手动的过程,未来我们-v卷的技术,可以实现
这是拷贝文件夹
docker cp 容器长ID:docker容器路径/文件夹 你的文件夹/ 
从主机拷贝文件到容器内
# 1 查找容器
docker ps -a

# 2 确定我们的容器名,并获取容器   长ID
docker inspect -f '{{.ID}}' your_NAME

# 拷贝本地文件到容器
docker cp 你的文件路径 容器长ID:docker容器路径
#拷贝文件夹到容器中
dcoekr cp 文件路径/w文件夹 docker cp 容器长ID:docker容器路径/文件夹 你的文件夹/ 

commit镜像

docker commit 提交容器成为一个新的副本

#命令和git原理类似
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[版本号]
# 该命令结束后 将提交的镜像放在你自己的docker中

#例如:
# 1、 启动一个默认的tomcat
# 2、发现这个默认的tomcat是没有webapps应用,镜像的原因,官方的镜像默认 webapps下面是没有文件的!
# 3、我自己拷贝进去了基本的文件
# 4、将我们操作的容器通过commit提交为一个镜像! 我们以后就使用我们修改过的镜像即可

容器数据卷

什么是容器数据卷

  • docker理念回顾:将应用和环境打包成一个镜像

  • ​ 数据? 如果数据都在容器中,那么我们容器删除,数据就丢失!

  • 需要容器之间可以有一个数据共享的技术! Docker容器中产生的数据,同步到本地!这就是卷技术!目录的挂载,将我们容器内的目录,挂载到Linux上面!

#方式一:直接使用命令来挂载 -v
docker run -it -v 主机目录:容器内目录 镜像名 /bin/bash

#例如
docker run -it -v /home/ceshi:/home centos /bin/bash
  • 测试

    1、停止容器

    2、宿主机上修改文件

    3、启动容器

    4、容器内的数据依旧是同步的

    结论,容器数据卷不管是修改容器中的还是宿主机中的数据,挂卷的文件夹中的内容都是同步的。

    好处:我们以后修改只需要在本地修改即可,容器内会自动同步

-v
docker run -it -v 主机目录:容器内目录 镜像名 /bin/bash

#例如
docker run -it -v /home/ceshi:/home centos /bin/bash

  • 测试

    1、停止容器

    2、宿主机上修改文件

    3、启动容器

    4、容器内的数据依旧是同步的

    结论,容器数据卷不管是修改容器中的还是宿主机中的数据,挂卷的文件夹中的内容都是同步的。

    好处:我们以后修改只需要在本地修改即可,容器内会自动同步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值