一. 安装docker

1.先卸载机器之前的docker相关组件

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

3.设置国内阿里的镜像仓库

yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.更新yum的软件包索引

yum makecache fast

5.安装docker相关组件 docke-ce 是社区版本

yum  -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin

6.启动Docker 引擎并设置开机自启

systemctl start docker

systemctl enable docker 


也可以用一条命令

systemctl  enable --now docker

7.验证安装是否成功

docker run hello-world

如果一切正常,就是如下图

二. 容器命令

docker run  【可选参数】  image

     --name="Name”      容器名字

      -d         后台方式运行 

     -it         使用交互方式进行,进入容器查看内容     

     -p                 主机端口:容器端口   (常用)

     -P          随机指定端口

docker ps 命令 列出当前正在运行的容器

-a #列出当前正在运行的的容器+带出历史运行过的容器

docker rm   容器id            #删除指定的容器,不能删除正在运行的容器,如果要强制删除  rm -f

docker rm -f  $(docker ps -aq)   #删除所有的容器 

docker ps -a -q |xargs docker rm   #删除所有的容器

docker logs 容器id

-tf          #显示日志

--tail  number  #要显示的日志条数

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

docker可以通过 –platform=platformname 命令获取指定系统架构的镜像,具体为:

docker pull --platform=<plartform>  <image-name>:<tag>

示列:docker  pull --platform=arm64  nginx:latest 

进入当前正在运行的容器

docker exec -it 容器id  bashshell  #进入容器后开启一个新的终端,可以在里面操作

docker attach  容器id         #进入容器正在运行的终端,不会启动新的进程

docker   stats                  #查看当前正在运行的容器使用cpu、内存等状态

docker  top 容器id                 #查看容器内部的运行进程

三. commit 镜像 导出与导入

命令和git原理类似
     docker commit -m="提交的描述描述信息"  -a="作者"   容器id  目标镜像名: [TAG]

打包镜像
     docker save -o  minio-nginx.tar minio/minio:latest nginx:1.19.2-alpine

载入镜像
     docker load -i   minio-nginx.tar 


结合这两个命令以及 ssh 甚至 pv 的话,利用 Linux 强大的管道
我们可以写一个命令完成从一个机器将镜像迁移到另一个机器,并且带进度条的功能:

docker save <镜像名> | bzip2 | pv | ssh <用户名>@<主机名> 'cat | docker load'

四. 具名和匿名挂载

     -v  容器内路径                #匿名挂载

     -v  卷名:容器内路径           #具名挂载

     -v  /宿主机路径::容器内路径       #指定路径挂载 

匿名挂载 -v 容器内路径

 docker run -d -P --name nginx01 -v /etc/nginx nginx

root@# docker volume ls
DRIVER VOLUME NAME
local 8938cbf4bd600fead15f20c3fcd51cd25d8a3ce0fd4815494d1e94efb332c125

具名挂载 -v 卷名:容器内路径

docker run -d -P --name nginx04 -v tang-nginx:/etc/nginx nginx

root@# docker volume ls
DRIVER VOLUME NAME
local 8938cbf4bd600fead15f20c3fcd51cd25d8a3ce0fd4815494d1e94efb332c125
local tang-nginx

五. Dockerfile

Dockerfile的指令

FROM          # 基础镜像,一切从这里开始构建

MAINTAINER    # 镜像是谁写的,姓名+邮箱

RUN        # 镜像构建的时候需要运行的命令

ADD        # 将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包

WORKDIR    # 镜像的工作目录

VOLUME      # 挂载的目录

EXPOSE       # 保留端口配置

CMD        #  指定这个容器启动的时候要运行的命令;一个Dockerfile中可以有多个CMD指令,只有最后一个会生效,CMD会被docker run 之后的参数替换

ENTRYPOINT   #  类似于CMD指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,

ONBUILD     # 当构建一个被继承 DockerFile 这个时候就会运行 ONBUILD 的指令。触发指令

COPY      # 类似ADD ,将我们文件拷贝到镜像中

ENV         # 构建的时候设置环境变量!

小结:


参考链接:

docker官网指导 https://docs.docker.com/engine/install/ubuntu/

青年码农博客 https://www.cnblogs.com/nmgwap/p/16331692.html

菜鸟教程   https://www.runoob.com/docker/docker-command-manual.html

Direct_博客 https://blog.csdn.net/D1179869625/article/details/122933562