【随记】docker速成命令记录,以及常用场景命令字典速查

发布于:2025-09-15 ⋅ 阅读:(16) ⋅ 点赞:(0)

前言

这篇文章是我的进行docker学习的时候,发现这些东西一下子记不住,所以写了一篇类似于字典的文章,希望各位可以喜欢

操作系统:centos(其实就是yum包的区别)

正文

 docker 命令速查

创建容器

create命令

docker create -it 镜像名

// it 代表着长久持续的镜像

docker -it --name ubuntu-1 ubuntu

// --name 代表着可以指定名称,之后可以通过操作名称处理镜像,如果不指定将会随机生成

查看容器列表

查看容器

docker ps -a

罗列出所有的镜像不管再跑还是没再跑

启动、停止、重启容器

启动容器start

docker start 容器名

// start 直接启动后就可以进入了,除此之外还有restart,和stop

docker stop 容器名

docker restart 容器名

进入容器

进入容器的命令


docker exec -it ubuntu /bin/bash

// -it设置一个长久有效的容器 Ubuntu指定镜像 进入的路径为/bin/bash

退出容器

退出容器命令

exit

如果你不使用-d选项,那么会自动的进入容器的命令行,exit退出之后将会直接退出关闭容器

拉取镜像

拉取镜像使用pull

docker pull 镜像名

删除镜像、容器

// docker 删除容器

docker rm 容器名

// docker 删除镜像

docker rmi --force 镜像名

//或者可以先stop 容器之后再rm也是可以的,这里force参数是一个意思

将镜像保存到本地

镜像保存到本地

docker save -o 打包后的包名 镜像

// -o参数可以指定包名 后面跟需要保存到本地的镜像名称

将本地镜像导入

docker 将本地镜像导入

docker load -i images.tar

//load 命令可以将镜像导入,但是如果docker中存在本镜像那么会自动跳过

在本地命令行输入命令

docker在本地命令行进行操作

docker exec bash -c "命令"

给镜像打一个快照

打镜像使用export

docker export 容器名 > 最终打包的包名

将快照导入回去

docker 导入快照

docker import 快照包名 镜像名称:latest

// 导入之后不是将原来的容器变为镜像,而是创建一个新的容器

查看所有的文件与初试状态相比的改变

docker diff使用

docker diff 容器名

制作一个镜像

docker commit 进行镜像构建

docker commite 容器名 构建镜像的名称

查看一个镜像详情

docker inspect

docker inspect -f "{{json .RootFS.Layers}}"  镜像名 | jq


该命令可以用来查看docker中各种资源的详细信息,当我们使用dcoker inspect查镜像的详细信息时,返回信息中RootFS.Layers字段就表明了镜像的层级关系。同时由于docker inspect返回的信息较多,我们可以使用-f参数配合jq工具,对docker inspect的输出进行过滤和格式化。

制作一个容器

vi Dockerfile
    FROM ubuntu:latest
    RUN apt-get update

docker build -t 容器名


使用-t来指定build的容器名

dockerfile用法

Dockerfile文件类似于脚本文件,Dockerfile主要支持的命令如下:
FROM    指定基础镜像,必须为第一个命令

LABEL    为镜像添加标签

RUN    构建时执行的命令行指令

ADD    将本地文件添加到容器中,如果为tar类型文件,则会自动解压,可以访问网络资源,类似wget(网络资源不会被解压)

COPY    将本地文件添加到容器中,不会解压,也不可以访问网络资源

CMD    容器启动时执行的命令,只有最后一条可以生效,可以被docker run的启动命令覆盖。

ENTRYPOINT    容器启动时执行的入口,只有最后一条可以生效,一定会被执行,不可以被覆盖。

EXPOSE    设置默认开放的网络端口(后面的实验会涉及到)

VOLUME    设置默认加载的VOLUME卷(后面的实验会涉及到)

ENV    设置环境变量。

WORKDIR    设置默认的工作目录。

USER    设置容器运行时的用户。

ONBUILD    构建触发器,当此镜像被其他镜像用作基础镜像时,触发器会被执行。

ARG    设置构建参数,可以通过docker build --build-arg将参数从外部传到到Dockerfile构建过程中。

 

查看容器历史记录

docker history ub/commit

使用history来进行查看我们生成的容器历史记录

将镜像传入私有仓库

docker tag

docker tag [本地镜像名] [私有仓库的URL][私有仓库的镜像名称]

docker tag ub/commit 127.0.0.1:5000/ub/commit

docker push 127.0.0.1:5000/ub/commit

同时还可以通过[私有仓库URL]/v2/[镜像名称]/list来查看镜像的版本信息。

curl 127.0.0.1:5000/v2/ub/commit/tags/list

将镜像从私有仓库拉到本地

docker pull [私有仓库的URL][私有仓库的镜像名称]

 

 

 

centos安装docker

首先通过yum安装必要的依赖组件。为了编译后面的配置信息格式化输出,我们同时安装jq工具。

yum install -y yum-utils device-mapper-persistent-data lvm2

yum install -y jq

因为docker安装包不在yum的默认源列表中,因此需要向yum默认源列表中添加docker源的地址。

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 

源添加成功后,使用yum list命令查看当前的docker源中支持的安装包版本列表。 

yum list docker-ce --showduplicates | sort -r

选择需要的docker版本,通过yum install命令进行安装

yum install -y docker-ce.x86_64 3:20.10.16-3.el7 

启动docker和设置开机自启动

systemctl start docker.service

systemctl enable docker.service

查看版本确定是否安装成功

docker version

通过docker拉取镜像时,默认会通过国外的镜像源进行下载,因此可以配置国内的镜像源以加快下载速度。修改docker的镜像源时,我们使用vi编辑文件 /etc/docker/daemon.json 。

vim /etc/docker/daemon.json 

进入vim界面之后,按i进入编辑模式。将下列内容添加到文件中。

{
  "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}

重启docker

systemctl restart docker.service 

跑镜像

docker run hello-world

Ubuntu安装docker

 Ubuntu Docker 使用官方安装脚本自动安装:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun


 

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh


 

卸载旧版本
Docker 的旧版本被称为 docker,docker.io 或 docker-engine 。如果已安装,请卸载它们:

sudo apt-get remove docker docker-engine docker.io containerd runc


 

网上拉取镜像:(第一次安装无本地image)

sudo docker pull ubuntu:18.04

 

本地导入镜像:(如果有自己的image)
导入文件:
假设镜像文件【tndl-img:v1.tar】在root/zyklbr/目录需要cd进入当前目录操作 【cd zyklbr】

sudo cat tndl-img:v1.tar | sudo docker import - tndl-img:v1


 

查看镜像:

sudo docker images


 

查看所有容器:

sudo docker ps -a


 

查看正在运行的容器:
 

sudo docker ps

用镜像生成一个容器:
先尝试使用

sudo docker  run  -dit  --name=tndl-con -p 2200:22 -p 80:80 -p 443:443 tndl-img:v1  /bin/bash



 

docker宿主机通过top查看进程,发现有agetty进程100%占用CPU资源,这是【–privileged=true /sbin/init】命令导致的,正常开启后,可以停止agetty进程解除cpu的高占用:

在宿主机以及Container中运行下述命令

systemctl stop getty@tty1.service
systemctl mask getty@tty1.service