向来用vulhub只会docker-compose up -d直接搭建 自己也想多学点命令哈!
Docker环境信息:
1.docker info
–显示Docker系统信息,包括镜像和容器数
2.docker version
–显示Docker版本信息
容器的管理:
1.docker run
–创建一个新的容器并运行一个命令:docker run [options] IMAGE [COMMAND] [ARG...]
-i选项表示使用交互模式,始终保持输入流开放
-t选项表示分配一个伪终端,一般两个参数结合时使用-it,即可在容器中利用打开的伪终端进行交互操作
-d选项: 后台运行容器,并返回容器ID
–name选项可以指定docker run命令启动的容器名字,若无此选项,Docker将为容器随机分配一个名字
-c选项:用于给运行在容器中的所有进程分配CPU的shares值,这是一个相对权重,实际的处理速度还与宿主机的CPU相关
-m选项:用于限制为容器中所有进程分配的内存总量,以B、K、M、G为单位
-v选项:用于挂载一个volume,可以用多个-v参数同时挂载多个volume。volume的格式为[host-dir]:[container-dir]:[rw|ro]
-p选项:用于将容器内部端口映射给宿主机的端口,其常见格式为:主机(宿主)端口:容器内部端口
-P选项:随机端口映射,容器内部端口随机映射到宿主机的端口
示例1 运行phpmyadmin管理,并分配一个伪终端:
docker run -it vulhub/phpmyadmin:4.4.15.6 /bin/bash
示例2 后台运行ubuntu容器,并返回该容器ID:
2.docker start
–启动一个或多个已经被停止的容器:docker start [OPTIONS] CONTAINER [CONTAINER...]
示例:
docker run 与docker start的区别:
1、docker run的作用相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)。
2、docker start的作用是,重新启动已存在的镜像。也就是说,如果使用这个命令,我们必须事先知道这个容器的ID,或者这个容器的名字,我们可以使用docker ps找到这个容器的信息。
3.docker restart
–重启容器:docker restart [OPTIONS] CONTAINER [CONTAINER...]
4.docker rm
–删除一个或多少容器
用法:
docker rm [OPTIONS] CONTAINER [CONTAINER...]
-f :通过SIGKILL信号强制删除一个运行中的容器
-l :移除容器间的网络连接,而非容器本身
-v :-v 删除与容器关联的卷
5.docker stop
–停止一个运行中的容器(利用方法和start相似)
6.docker kill
–kill命令的作用是杀掉一个运行中的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]
-s :向容器发送一个信号
tips: docker stop 与 docker kill的区别?
docker stop,支持“优雅退出”。先发送SIGTERM信号,在一段时间之后(10s)再发送SIGKILL信号。Docker内部的应用程序可以接收SIGTERM信号,然后做一些“退出前工作”,比如保存状态、处理当前请求等。
docker kill,发送SIGKILL信号,应用程序直接退出。
一些常见的rm和kill组合姿势~
杀死所有正在运行的容器
docker kill $(docker ps -a -q)
删除所有已经停止的容器
docker rm $(docker ps -a -q)
7.docker exec
docker exec命令比较常用,他的作用是在运行的容器中执行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
进入docker容器中/bin/bash 终端运行
镜像仓库相关命令
1.docker login
–登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker login [OPTIONS] [SERVER]
-u :登陆的用户名
-p :登陆的密码
2.docker logout
–退出仓库
3.docker search
–从Docker Hub上查找指定的镜像
docker search [OPTIONS] images
--automated :只列出 automated build类型的镜像
--no-trunc :显示完整的镜像描述
-s :列出收藏数不小于指定值的镜像
示例 从Docker Hub查找所有镜像名包含nginx的,并且收藏数大于10的镜像:
docker search -s 10 nginx
4.docker pull
–从镜像仓库中拉取或者更新指定镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
-a:拉取所有 tagged 镜像
--disable-content-trust :忽略镜像的校验,默认开启
示例 从Docker Hub拉取nginx最新版镜像:
docker pull nginx
5.docker push
–将本地的镜像上传到镜像仓库,首先要登录到镜像仓库,还要登录到Docker Hub创建对应名称的仓库,然后用tag命令给镜像打标签,只有打上标签才可以上传成功。(详细介绍)
docker push [OPTIONS] NAME[:TAG]
--disable-content-trust :忽略镜像的校验,默认开启
6.docker tag
–标记本地镜像,将其归入某一仓库
一个完整的push示例:
[root@localhost ~]# docker tag nginx:latest area39/nginx:v1
[root@localhost ~]# docker push area39/nginx:v1
The push refers to repository [docker.io/area39/nginx]
589561a3ffb4: Pushed
ef7dbb0cfc81: Pushed
d56055da3352: Pushed
v1: digest: sha256:f83b2ffd963ac911f9e638184c8d580cc1f3139d5c8c33c87c3fb90aebdebf76 size: 948
镜像管理相关命令
1.docker images
–通过docker images命令可以列出主机上的镜像,默认只列出最顶层的镜像,可以使用-a选项显示出所有镜像
[root@localhost ~]# docker images -a
2.docker commit
–docker commit命令可以将一个容器固化为一个新的镜像。当需要制定特定的镜像时,会进行修改容器的配置,比如在容器中安装一些特定的工具等,通过commit命令可以将这些修改保存起来,使其不会因为容器的停止而丢失
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a :提交的镜像作者
-c :使用Dockerfile指令来创建镜像
-m :提交时的说明文字
-p :在commit时,将容器暂停
实例:
更加详细的操作:https://www.cnblogs.com/waterlufei/p/6682345.html
容器运维操作:
1.docker attach
–连接正在运行的容器,观察该容器的运行情况,或与容器的主进程进行交互
2.docker ps
–常用的选项有-a和-l,-a选项可以查看所有的容器,包括停止的容器;-l选项只查看最新创建的容器,包括不在运行的容器
docker ps [OPTIONS]
-a :显示所有的容器,包括未运行的
-f :根据条件过滤显示的内容
--format :指定返回值的模板文件
-l :显示最近创建的容器
-n :列出最近创建的n个容器
--no-trunc :不截断输出
-q :静默模式,只显示容器编号
-s :显示总的文件大小
3.docker rename
–重命名容器
用法:docker rename CONTAINER NEW_NAME
实例:
[root@localhost ~]# docker rename 48432e783e65 ctf-xss
4.docker cp
–用于容器与主机之间的数据拷贝
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
-L :保持源目标中的链接
示例1 将本目录下的test.php文件复制到容器的’/var/www/html/‘目录下:
[root@localhost ~]# docker cp test.php 5198ec963e43:/var/www/html/
[root@localhost ~]# docker exec -it 5198ec963e43 /bin/bash
root@5198ec963e43:/# ls /var/www/html
index.phptest.php
示例2 将容器内’/var/www/html/index.php’复制到本机/root目录下:
[root@localhost ~]# docker cp 5198ec963e43:/var/www/html/index.php /root/
[root@localhost ~]# ls
index.phptest.php
我感觉有用的都写出来了 大家如果想要了解更多的话可以参考其他的文章!!!