Docker基本知识笔记(一)

目录

一、docker基本组成

二、docker容器运行流程

运行流程

底层原理

Docker为什么比VM Ware快?

三、docker安装、卸载

安装

卸载

四、基本命令 

镜像命令

容器命令

其他命令

一、docker基本组成

主要是三部分:

镜像:类似一个模板,其他地方可以直接进行下载使用。

容器:类似一个轻量化linux系统,即运行的镜像。

仓库:存放容器的地方,分成公有和私有

二、docker容器运行流程

运行流程:

第一:查找本地是否已经有下载所需镜像

第二:如果存在,直接运行即可

第三:如果不存在,则去docker hub下载,判断hub中是否有该镜像,没有的话返回错误,有的话下载到本地,运行。

底层原理:

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

Docker为什么比VM Ware快?

1、Docker比虚拟机更少的抽象层

2、docker利用宿主机的内核,VM需要的是Guest OS

Docker新建一个容器的时候,不需要像虚拟机一样重新加载一个操作系统内核,直接利用宿主机的操作系统,而虚拟机是需要加载Guest OS。

三、docker安装、卸载

安装

1、查看内核版本、系统版本相关信息

➜  ~ uname -r
3.10.0-1160.41.1.el7.x86_64
➜  ~ 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"

2.卸载之前可能安装好的版本

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

3.安装yum相关工具

yum install -y yum-utils

4.配置阿里云

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo  #国外地址
    
    # 设置阿里云的Docker镜像仓库
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  #国内地址

5.更新yum软件包索引 

yum makecache fast

6.安装docker相关内容

 docker-ce 是社区版,docker-ee 企业版

命令: yum install docker-ce docker-ce-cli containerd.io

指定版本:yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6 

7.启动docker并设置开机自启动

#启动并设置开机自启动
systemctl enable docker --now
# 查看当前版本号,是否启动成功
docker version

卸载

# 1. 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
# 2. 删除资源  /var/lib/docker是docker的默认工作路径
rm -rf /var/lib/docker

四、基本命令 

docker version          #查看docker的版本信息
docker info             #查看docker的系统信息,包括镜像和容器的数量
docker COMMAND --help   #帮助命令(可查看可选的参数)

镜像命令

1.查看本地所有镜像

➜  ~ docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              5d0da3dc9764        6 months ago        231MB

#解释:
1.REPOSITORY  镜像的仓库源

2.TAG  镜像的标签

3.IMAGE ID 镜像的id

4.CREATED 镜像的创建时间

5.SIZE 镜像的大小


# 可选参数

-a/--all 列出所有镜像

-q/--quiet 只显示镜像的id

2.查找镜像(搜索远程仓库中的镜像)

➜  ~ docker search mysql
NAME                             DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                            MySQL is a widely used, open-source relation…   12401               [OK]                
mariadb                          MariaDB Server is a high performing open sou…   4777                [OK]                
mysql/mysql-server               Optimized MySQL Server Docker images. Create…   918                                     [OK]
phpmyadmin                       phpMyAdmin - A web interface for MySQL and M…   501                 [OK]                
mysql/mysql-cluster              Experimental MySQL Cluster Docker images. Cr…   93                                      
centos/mysql-57-centos7          MySQL 5.7 SQL database server                   92                                      
bitnami/mysql                    Bitnami MySQL Docker Image                      69                                      [OK]
ubuntu/mysql                     MySQL open source fast, stable, multi-thread…   29                                      
circleci/mysql                   MySQL is a widely used, open-source relation…   25                                      
mysql/mysql-router               MySQL Router provides transparent routing be…   23                                      
google/mysql                     MySQL server for Google Compute Engine          21                                      [OK]
arey/mysql-client                Run a MySQL client from a docker container      20                                      [OK]
vmware/harbor-db                 Mysql container for Harbor                      10                                      
mysqlboy/mydumper                mydumper for mysql logcial backups              3                                       
mysqlboy/docker-mydumper         docker-mydumper containerizes MySQL logical …   3                                       
bitnami/mysqld-exporter                                                          2                                       
ibmcom/mysql-s390x               Docker image for mysql-s390x                    2                                       
mysql/mysql-operator             MySQL Operator for Kubernetes                   0                                       
mirantis/mysql                                                                   0                                       
mysqlboy/elasticsearch                                                           0                                       
mysqleatmydata/mysql-eatmydata                                                   0                                       
cimg/mysql                                                                       0                                       
mysql/ndb-operator               MySQL NDB Operator for Kubernetes               0                                       
mysqled25519/mysqled25519                                                        0                                       
ibmcom/tidb-ppc64le              TiDB is a distributed NewSQL database compat…   0 
# 查看STARS大于3000的mysql相关镜像                                      
➜  ~ docker search mysql --filter=STARS=3000
NAME                DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql               MySQL is a widely used, open-source relation…   12401               [OK]                
mariadb             MariaDB Server is a high performing open sou…   4777                [OK]   

 3.下载镜像到本地

➜  ~ docker pull mysql 
Using default tag: latest               #不写tag默认是最新的
latest: Pulling from library/mysql      #指定版本 docker pull mysql:5.7
72a69066d2fe: Pull complete             #分层下载 镜像核心就是联合文件系统-- 一层一层的
93619dbc5b36: Pull complete 
99da31dd6142: Pull complete 
626033c43d70: Pull complete 
37d5d7efb64e: Pull complete 
ac563158d721: Pull complete 
d2ba16033dad: Pull complete 
688ba7d5c01a: Pull complete 
00e060b6d11d: Pull complete 
1c04857f594f: Pull complete 
4d7cfa90e6ea: Pull complete 
e0431212d27d: Pull complete 
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:latest

4.删除镜像

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

 容器命令

1.运行命令

docker run [可选参数] image

#参数说明
--name="名字"           指定容器名字
-d                     后台方式运行
-it                    使用交互方式运行,进入容器查看内容
-p                     指定容器的端口
(
-p ip:主机端口:容器端口  配置主机端口映射到容器端口
-p 主机端口:容器端口
-p 容器端口
)
-P                     随机指定端口(大写的P)

 例子,运行centos并进入

➜  ~ docker run -it centos /bin/bash
[root@3ace51e0fb05 /]# 

2.退出容器命令

exit        #停止并退出容器
Ctrl+P+Q    #不停止容器退出,该命令是快捷键

 3.查看容器运行情况

docker ps # 列出当前正在运行的容器
# 参数说明
-a   # 列出所有容器的运行记录
-n=? # 显示最近创建的n个容器
-q   # 只显示容器的编号

4.查看容器中的进程信息


#docker容器后台运行,必须要有一个前台的进程,否则会自动停止
#编写shell脚本循环执行,使得centos容器保持运行状态
➜  ~ docker run -d centos /bin/sh -c "while true;do echo hi;sleep 5;done"
9f278434e57d5cad917f8cd849ddf9e115bb86da3278781dc6e43255d904e515

➜  ~ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
9f278434e57d        centos              "/bin/sh -c 'while t…"   5 seconds ago       Up 5 seconds                            elated_kirch

# 查看容器内部进程信息
➜  ~ docker top 9f278434e57d
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                3874                3856                0                   17:53               ?                   00:00:00            /bin/sh -c while true;do echo hi;sleep 5;done
root                3933                3874                0                   17:53               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 5
➜  ~ 

4.删除容器

docker rm 容器id                  #删除指定的容器,不能删除正在运行的容器,强制删除使用 rm -f
docker rm -f $(docker ps -aq)    #删除所有的容器
docker ps -a -q|xargs docker rm  #删除所有的容器

5.启动停止容器

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

6.提交自己修改的容器,提交到本地

docker commit 命令提交容器成为一个新的版本

docker commit -m=“提交的描述信息”  -a="作者" 容器id 目标镜像名:[TAG] 

 其他命令

1.日志相关

docker logs -tf 容器id
docker logs --tail num 容器id #num为要显示的日志条数

➜  ~ docker logs -tf --tail 10 ac9aca6d9915
2022-04-13T10:11:28.058528684Z hi
2022-04-13T10:11:33.063423040Z hi
2022-04-13T10:11:38.070628146Z hi
2022-04-13T10:11:43.076990468Z hi
2022-04-13T10:11:48.082237532Z hi
2022-04-13T10:11:53.085400262Z hi
2022-04-13T10:11:58.090633074Z hi
2022-04-13T10:12:03.094285584Z hi
2022-04-13T10:12:08.099404783Z hi
2022-04-13T10:12:13.104262303Z hi

2.查看容器相关详细信息

➜  ~ docker inspect ac9aca6d9915 # docker inspect 容器id
[
    {
        "Id": "ac9aca6d991515ac5542106abf53bfb3187bb5e35a0e4818c9eb18db07daf5b9",
        "Created": "2022-04-13T10:11:27.733833798Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo hi;sleep 5;done"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 4280,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-04-13T10:11:28.074513327Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
        "ResolvConfPath": "/var/lib/docker/containers/ac9aca6d991515ac5542106abf53bfb3187bb5e35a0e4818c9eb18db07daf5b9/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/ac9aca6d991515ac5542106abf53bfb3187bb5e35a0e4818c9eb18db07daf5b9/hostname",
        "HostsPath": "/var/lib/docker/containers/ac9aca6d991515ac5542106abf53bfb3187bb5e35a0e4818c9eb18db07daf5b9/hosts",
        "LogPath": "/var/lib/docker/containers/ac9aca6d991515ac5542106abf53bfb3187bb5e35a0e4818c9eb18db07daf5b9/ac9aca6d991515ac5542106abf53bfb3187bb5e35a0e4818c9eb18db07daf5b9-json.log",
        "Name": "/wizardly_colden",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
.......

3.进入容器,进行修改容器内部文件

# 方法一 docker exec -it 容器id /bin/bash
# 方法二 docker attach 容器id
➜  ~ docker exec -it ac9aca6d9915 /bin/bash
[root@ac9aca6d9915 /]# pwd
/
[root@ac9aca6d9915 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

➜  ~ docker attach ac9aca6d9915
hi
hi

4.拷贝文件(主机与容器之间的操作)

#拷贝容器的文件到主机中
docker cp 容器id:容器内路径  目的主机路径

#拷贝宿主机的文件到容器中
docker cp 目的主机路径 容器id:容器内路径

参考链接:https://blog.csdn.net/huangjhai/article/details/118854733 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我会帮助你记录和学习Docker知识点。下面是一份Docker学习笔记: 1. 什么是DockerDocker是一个开源的容器化平台,可以帮助开发者创建、打包、部署和运行应用程序,使应用程序可以在不同的环境中无缝运行。 2. Docker的优势有哪些? - 轻量化:Docker容器与虚拟机相比更加轻量级,启动和停止速度更快。 - 可移植性:Docker容器可以在任何支持Docker的平台上运行,无需担心环境不一致的问题。 - 隔离性:Docker使用容器技术进行隔离,每个容器之间相互独立,不会相互影响。 - 效率:Docker可以将应用程序及其依赖项打包为一个镜像,部署和扩展非常方便。 3. Docker常用的概念: - 镜像(Image):一个只读的模板,包含了运行应用程序所需的所有文件和依赖项。 - 容器(Container):基于镜像创建的可执行实例,可以运行、停止、删除等操作。 - 仓库(Registry):用于存储和分享镜像的地方,常用的有Docker Hub。 - Dockerfile:用于定义镜像构建过程的文本文件,包含了一系列的指令和配置。 4. Docker基本使用命令: - `docker pull <image-name>`:从仓库中拉取指定镜像。 - `docker run <image-name>`:创建并运行一个新的容器。 - `docker ps`:查看当前正在运行的容器。 - `docker stop <container-id>`:停止指定容器的运行。 - `docker rm <container-id>`:删除指定容器。 - `docker rmi <image-name>`:删除指定镜像。 5. Docker常见应用场景: - 镜像管理:可以通过Docker镜像进行应用程序开发、测试和部署。 - 微服务架构:通过容器化实现应用程序的模块化,方便管理和扩展。 - CI/CD:在持续集成和持续部署过程中使用Docker来构建、测试和发布应用程序。 这些是Docker学习过程中的一些基础知识点和常用命令。希望对你有帮助!如果你还有其他问题,可以随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值