首页 > 其他分享 >Docker常用的命令

Docker常用的命令

时间:2023-02-19 09:56:54浏览次数:30  
标签:常用 nginx 命令 master 镜像 Docker k8s root docker

1、查看镜像

1.1、查询镜像

[root@k8s-master ~]# docker images

1.2、查询运行的镜像

# 查看正在运行的镜像
[root@k8s-master ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

# 查看所有运行或运行过的镜像
[root@k8s-master ~]# docker ps -a
CONTAINER ID   IMAGE         COMMAND    CREATED         STATUS                     PORTS     NAMES
6ab7d6d28da1   hello-world   "/hello"   8 seconds ago   Exited (0) 7 seconds ago             busy_spence

1.3、格式化输出

Placeholder Description
.ID Image ID
.Repository Image repository
.Tag Image tag
.Digest Image digest
.CreatedSince Elapsed time since the image was created
.CreatedAt Time when the image was created
.Size Image disk size

[root@k8s-master ~]# docker images --format '{{.Repository}} - {{.ID}}'

1.3.1、格式化取json参数

[root@k8s-master ~]# docker inspect --format '{{.NetworkSettings.IPAddress}}' c996ab2919e
172.7.5.2

1.4、查询镜像详细信息

[root@k8s-master ~]# docker inspect e6ea68648f0c

1.5、搜索镜像

[root@k8s-master ~]# docker search centos

2、下载或运行镜像

2.1、下载镜像

[root@k8s-master ~]# docker pull hello-world

2.2、运行镜像

2.2.1、简单运行镜像

[root@k8s-master ~]# docker run hello-world

2.2.2、运行执行命令

[root@k8s-master ~]# docker run -it centos ping www.baidu.com

2.2.3、后台运行镜像

[root@k8s-master ~]# docker run -d nginx

2.2.4、无痕运行镜像

[root@k8s-master ~]# docker run -d --rm nginx

2.2.5、运行镜像定义启动的名字

[root@k8s-master ~]# docker run -d --name cyc-nginx --rm nginx

2.3、停止镜像

[root@k8s-master ~]# docker stop 0c9c7049c715

2.4、查询运行的日志 

[root@k8s-master ~]# docker logs e1801a89fa8a

2.5、进入运行的容器中

[root@k8s-master ~]# docker exec -it e1801a89fa8a bash

3、镜像导入、导出、提交

3.1、导出镜像

[root@k8s-master ~]# docker save registry.aliyuncs.com/google_containers/kube-apiserver:v1.26.0 > kube-apiserver_v1.26.0.tgz

3.2、导入镜像

root@k8s-master ~]# docker load <kube-apiserver_v1.26.0.tgz 

3.3、提交镜像

[root@k8s-master ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS                     PORTS     NAMES
0b2a9e8f4b64   centos    "bash"    15 seconds ago   Exited (0) 3 seconds ago             affectionate_rhodes

[root@k8s-master ~]# docker commit -a 'cyc_author' -m 'my centos ping' 0b2a9e8f4b64 cyc_centos_ping:v1
sha256:1f7ec9353fe0323c1afd66863f8175917b678cc1e1c10d5bf82fee579bcfedb4

[root@k8s-master ~]# docker images
REPOSITORY                                                        TAG       IMAGE ID       CREATED         SIZE
cyc_centos_ping                                                   v1        1f7ec9353fe0   7 seconds ago   231MB
centos                                                            latest    5d0da3dc9764   16 months ago   231MB

4、删除与参数查看

4.1、删除运行记录

4.1.1、单个删除运行记录镜像

[root@k8s-master ~]# docker rm 4ff2d3122477

4.1.2、批量删除运行记录镜像

[root@k8s-master ~]# docker rm `docker ps -aq`

4.2、删除镜像

4.2.1、单个删除镜像

[root@k8s-master ~]# docker rmi feb5d9fea6a5

4.2.1、批量删除镜像

[root@k8s-master ~]# docker rmi `docker ps -qa` 

4.3、参数查看

4.3.1、top查询进程相关

[root@k8s-master ~]# docker top c996ab2919e1
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                40241               40221               0                   09:55               ?                   00:00:00            nginx: master process nginx -g daemon off;
101                 40293               40241               0                   09:55               ?                   00:00:00            nginx: worker process
101                 40294               40241               0                   09:55               ?                   00:00:00            nginx: worker process

4.3.2、stats查询程序运行的参数

[root@k8s-master ~]# docker stats c996ab2919e1
CONTAINER ID   NAME                 CPU %     MEM USAGE / LIMIT     MEM %     NET I/O     BLOCK I/O     PIDS
c996ab2919e1   trusting_antonelli   0.00%     1.973MiB / 3.682GiB   0.05%     656B / 0B   0B / 16.4kB   3

5、DockerFile

5.1、FROM

构建镜像基于哪个镜像,如:
FROM nginx

5.2、MAINTAINER

镜像维护者姓名或邮箱地址,如:
MAINTAINER [email protected]

5.3、RUN

构建镜像时运行的指令,即运行的命令。如:
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"

5.4、ADD

ADD 指令和 COPY 的使用格类似(同样需求下,官方推荐使用 COPY)。功能也类似,不同之处如下:

ADD 的优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。
ADD 的缺点:在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。

5.5、COPY

复制指令,从上下文目录中复制文件或者目录到容器里指定路径。

格式:

COPY [--chown=<user>:<group>] <源路径1>...  <目标路径>
COPY [--chown=<user>:<group>] ["<源路径1>",...  "<目标路径>"]
[--chown=<user>:<group>]:可选参数,用户改变复制到容器内文件的拥有者和属组。

<源路径>:源文件或者源目录,这里可以是通配符表达式,其通配符规则要满足 Go 的 filepath.Match 规则。例如:

COPY hom* /mydir/
COPY hom?.txt /mydir/
<目标路径>:容器内的指定路径,该路径不用事先建好,路径不存在的话,会自动创建。

5.6、WORKDIR

WORKDIR
指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建立目录。

docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。

格式:

WORKDIR <工作目录路径>

5.7、VOLUME

VOLUME
定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。

作用:

避免重要的数据,因容器重启而丢失,这是非常致命的。
避免容器不断变大。
格式:

VOLUME ["<路径1>", "<路径2>"...]
VOLUME <路径>
在启动容器 docker run 的时候,我们可以通过 -v 参数修改挂载点。

5.8、EXPOSE

EXPOSE
仅仅只是声明端口。

作用:

帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。
在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。
格式:

EXPOSE <端口1> [<端口2>...]

5.9、CMD

CMD
类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:

CMD 在docker run 时运行。
RUN 是在 docker build。
作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。

注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。

格式:

CMD <shell 命令> 
CMD ["<可执行文件或命令>","<param1>","<param2>",...] 
CMD ["<param1>","<param2>",...]  # 该写法是为 ENTRYPOINT 指令指定的程序提供默认参数
推荐使用第二种格式,执行过程比较明确。第一种格式实际上在运行的过程中也会自动转换成第二种格式运行,并且默认可执行文件是 sh。

5.9、ENV

ENV
设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境变量。

格式:

ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>...
以下示例设置 NODE_VERSION = 7.2.0 , 在后续的指令中可以通过 $NODE_VERSION 引用:

ENV NODE_VERSION 7.2.0

RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
  && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc"

5.10、ENTRYPOINT

ENTRYPOINT
类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。

但是, 如果运行 docker run 时使用了 --entrypoint 选项,将覆盖 ENTRYPOINT 指令指定的程序。

优点:在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。

注意:如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。

格式:

ENTRYPOINT ["<executeable>","<param1>","<param2>",...]
可以搭配 CMD 命令使用:一般是变参才会使用 CMD ,这里的 CMD 等于是在给 ENTRYPOINT 传参,以下示例会提到。

示例:

假设已通过 Dockerfile 构建了 nginx:test 镜像:

FROM nginx

ENTRYPOINT ["nginx", "-c"] # 定参
CMD ["/etc/nginx/nginx.conf"] # 变参 
1、不传参运行

$ docker run  nginx:test
容器内会默认运行以下命令,启动主进程。

nginx -c /etc/nginx/nginx.conf
2、传参运行

$ docker run  nginx:test -c /etc/nginx/new.conf
容器内会默认运行以下命令,启动主进程(/etc/nginx/new.conf:假设容器内已有此文件)

nginx -c /etc/nginx/new.conf

5.11、简单实践

# 创建目录
[root@k8s-master opt]# mkdir /opt/my_nginx_dockerfile

# 创建Dockerfile文件
[root@k8s-master ~]# cat > /opt/my_nginx_dockerfile/Dockerfile << 'EOF'
FROM nginx
RUN echo "test nginx " >/usr/share/nginx/html/index.html
EOF

# 编译镜像
[root@k8s-master my_nginx_dockerfile]# docker build -t my_nginx:v1 .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM nginx
 ---> 605c77e624dd
Step 2/2 : RUN echo "test nginx " >/usr/share/nginx/html/index.html
 ---> Running in 69d84a0d4355
Removing intermediate container 69d84a0d4355
 ---> 2e5504e8e1e8
Successfully built 2e5504e8e1e8
Successfully tagged my_nginx:v1

# 测试镜像
[root@k8s-master my_nginx_dockerfile]# docker run -p 8080:80 my_nginx:v1

# 访问测试
http://192.168.10.9:8080/

6、打包镜像

6.1、实战1-打包python web项目

6.1.1、编写web代码

# -*- coding: utf-8 -*-
"""
   File Name : test1
   Description :
   Author : Administrator
   date : 2023/1/1
   Change Activity : 2023/1/1:
"""

import asyncio
import sys

import tornado.web


class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Tornado Web Hello world...")


def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])


async def main(port):
    app = make_app()
    app.listen(port)
    await asyncio.Event().wait()


if __name__ == "__main__":
    print('start tornedo web server...')

    port = 8888
    if len(sys.argv) == 2:
        port = sys.argv[1]
    asyncio.run(main(port))
tornado_web_test.py

6.1.2、编写Dockerfile

cat > Dockerfile <<'EOF'
FROM python:latest
RUN pip3 install tornado==6.2
COPY tornado_web_test.py /opt
WORKDIR /opt
EXPOSE 8888
CMD ["python3","tornado_web_test.py"]
EOF

6.1.3、编译镜像

[root@k8s-master learn_docker]# docker build -t my_tornado_web:v1 .

6.1.4、运行镜像和检查

[root@k8s-master learn_docker]# docker run -p 8888:8888 -d my_tornado_web:v1

[root@k8s-master learn_docker]# curl http://192.168.10.9:8888/
Tornado Web Hello world...

6.2、实战2-修改[实战1]再打包

6.2.1、显示效果

把代码修改为显示:
First Tornado Web Hello world...

6.2.2、修改镜像的安装源

# 注意:如果需要导入公钥的话,需要把公钥复制如下,进行导入
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys '3B4FE6ACC0B21F32'

cat > /etc/apt/sources.list <<'EOF'
deb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
EOF

参考阿里云如下:https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11PLEs6l

6.2.3、将原来运行的镜像修改好后打包

[root@k8s-master learn_docker]# docker ps -a | grep b42139585960
b42139585960   my_tornado_web:v1   "python3 tornado_web…"   About an hour ago    Exited (137) 4 minutes ago                                                   heuristic_shamir

[root@k8s-master learn_docker]# docker commit -a 'cyc_author' -m 'v2 version' b42139585960 my_tornado_web:v2

6.2.4、运行并且查看效果

# 查看镜像ID
[root@k8s-master learn_docker]# docker images | grep v2
my_tornado_web                                                    v2         aaf3454c59b4   3 minutes ago       1.02GB

# 运行镜像
[root@k8s-master learn_docker]# docker run -d -p 8888:8888 my_tornado_web:v2

# 访问测试
[root@k8s-master learn_docker]# curl http://192.168.10.9:8888/
First Tornado Web Hello world...

 

标签:常用,nginx,命令,master,镜像,Docker,k8s,root,docker
From: https://www.cnblogs.com/ygbh/p/17065057.html

相关文章

  • linux文件保护命令chattr
    chattr命令用来设置文件属性的一个工具,与chmod和chown不同,chattr命令主要是用来提高系统文件的安全性,对相应的文件进行锁定,可以很有效的防止误删除误操作,与chattr对应的命......
  • linux centOs7 安装docker
    一.设置安装源yum-config-manager--add-repohttp://download.docker.com/linux/centos/docker-ce.repo(中央仓库)或yum-config-manager--add-repohttp://mirrors.aliyu......
  • docker-数据卷挂载
    docker容器数据卷数据卷也叫:目录挂载即:将容器内的目录,挂载到宿主机为什么要使用数据卷容器的持久化和同步操作!多个容器间也是可以数据共享的,即多个容器可以挂载同......
  • CICD流水线 Jenkins + Docker compose 分环境 一键部署SpringCloud项目
    一、环境准备接上篇:上篇搭建好了Jenkins 环境 并把docker-compose.yml Dockerfile 相关jar包推送到了目标服务器。二、分环境部署1、SpringBoot配置pom.xml<pro......
  • 基本的Dos命令
    基本的Dos命令打开CMD的方式开始+系统+命令提示符Win键+R输入cmd打开控制台(推荐使用)在任意的文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口资源......
  • 【Redis】Redis 数据库 安装、配置、访问 ( Redis 简介 | 下载 Redis 安装包 | 安装 R
    文章目录​​一、Redis数据库简介​​​​二、Redis数据库操作场景实例​​​​三、下载Redis安装包​​​​1、Windows安装包下载​​​​2、Linux安装包下载​​​......
  • 云平台的测试———(2)Docker测试
    查看容器运行状态在server节点使用netsta命令查看仓库监听端口号在server节点,使用inspect查看rancher/server的卷组信息查看容器rancher server进程信息在server......
  • 分布式云计算的搭建平台———(3)Docker配置
    1.3.1基础配置进行网络配置,修改主机名,使用hostnamectlset-hostnameserver;hostnamectlset-hostnameclient修改两台主机名,配置文件/etc/hosts文件修改映射进入/etc/sy......
  • 重温 dockerfile & docker-compose
    重温dockerfile&dockerCompose复习dockerfile将应用程序及其需要的系统函数库、环境、配置、依赖,打包常用命令https://docs.docker.com/engine/reference/builder/......
  • Shell命令-常用操作
    Shell基础1Shell命令的基本格式基本格式command[选项][参数][]表示可选的,也就是可有可无。有些命令不写选项和参数也能执行,有些命令在必要的时候可以附带选项和参......