3. Docker基本命令的使用

Docker基本命令

目录

docker search

docker pull

docker images

docker run

docker ps

docker create

docker start/stop/restart

docker exec

docker rm 

docker rmi


 

docker search

docker search [OPTIONS] TERM

OPTIONS说明:

  • --automated :只列出 automated build类型的镜像;

  • --no-trunc :显示完整的镜像描述;

  • -s :列出收藏数不小于指定值的镜像。

用于在docker仓库中搜索镜像, 例如搜索 java

这样做的缺点很明显, 因为你不知道搜索结果对应的这些镜像内部封装的是什么, 大部分时候我们都是在docker Hub 官网来搜索镜像的, 访问 https://hub.docker.com/ , 登录用户

 

点击去就可以看到镜像的具体内容, 就可以按照需求选择仔细想要的镜像.

docker pull

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

OPTIONS说明:

  • -a :拉取所有 tagged 镜像
  • --disable-content-trust :忽略镜像的校验,默认开启

拉取刚刚选择的的镜像  

直接pull 没有输入tag 的话就会默认使用 latest , 要指定tag 可以使用 镜像名称:tag  的格式,

下面的列表是这个镜像所依赖的基础镜像, 镜像是由一些基础的镜像叠加起来的, 而且这些基础镜像是可以通用的, 比如这个进行用了 5040bd298390 那么下个镜像再次用 5040bd298390 的时候就可以直接引用了. 

这个表示就完成镜像的拉取了

docker images

docker images [OPTIONS] [REPOSITORY[:TAG]]
 

OPTIONS 说明

  • -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
  • --digests :显示镜像的摘要信息;
  • -f :显示满足条件的镜像;
  • --format :指定返回值的模板文件;
  • --no-trunc :显示完整的镜像信息;
  • -q :只显示镜像ID。

可以查看本地一已经拉取可以使用的镜像

docker run

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

  • -d: 后台运行容器,并返回容器ID;

  • -i: 以交互模式运行容器,通常与 -t 同时使用;

  • -p: 端口映射,格式为:主机(宿主)端口:容器端口

  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

  • --name="nginx-lb": 为容器指定一个名称;

  • --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

  • --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

  • -h "mars": 指定容器的hostname;

  • -e username="ritchie": 设置环境变量;

  • --env-file=[]: 从指定文件读入环境变量;

  • --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

  • -m :设置容器使用内存最大值;

  • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

  • --link=[]: 添加链接到另一个容器;

  • --expose=[]: 开放一个端口或一组端口

运行一下刚刚拉取的Java镜像

[docker@VM_121_116_centos ~]$ docker run -it java java -version

-it 使用交互模式, 结果显示容器的 jdk 版本为1.8

我们在来 pull 一个redis 的镜像

[docker@VM_121_116_centos ~]$ docker pull redis

run一下redis

[docker@VM_121_116_centos ~]$ docker run -p 6379:6379 --name redis  -d redis redis-server --appendonly yes

这里 -p 映射端口, 访问宿主机6379即可访问到容器的6379 ,  --name 定义容器名称  -d 在后台运行,  最后是在容器内执行 

redis-server --appendonly yes 开启 redis 持久化配置

小结:

决定容器的运行方式,前台执行还是后台执行 
docker run后面追加-d=true或者-d,那么容器将会运行在后台模式。 docker exec来进入到到该容器中,或者attach重新连接容器的会话 
进行交互式操作(例如Shell脚本),那我们必须使用-i -t参数同容器进行数据交互 
docker run时没有指定--name,那么deamon会自动生成一个随机字符串UUID 
Docker时有自动化的需求,你可以将containerID输出到指定的文件中(PIDfile): --cidfile="" 
--cidfile=""  
Docker的容器是没有特权的,例如不能在容器中再启动一个容器。这是因为默认情况下容器是不能访问任何其它设 备的。但是通过"privileged",容器就拥有了访问任何其它设备的权限

docker ps

docker ps [OPTIONS]

OPTIONS说明:

  • -a :显示所有的容器,包括未运行的。

  • -f :根据条件过滤显示的内容。

  • --format :指定返回值的模板文件。

  • -l :显示最近创建的容器。

  • -n :列出最近创建的n个容器。

  • --no-trunc :不截断输出。

  • -q :静默模式,只显示容器编号。

  • -s :显示总的文件大小。

查看运行的容器的状况, 有那些已经创建的容器, 看看刚刚创建的redis, 同时创建的Java容器停止了, 要使用 -a 参数才行

docker create

docker create 是创建一个容器, 参数和 docker run 是一致的. 但是他只是创建不会启动,

例如我们创建一个mysql的容器 

docker create -p 23306:3306 --name mysql:5.6 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

-e 是添加环境变量, 设定mysql的 root 密码

执行完毕后是容器是create状态, 没有运行

docker start/stop/restart

docker start/stop/restart [OPTIONS] CONTAINER [CONTAINER...]

分别用于 启动/停止/重启容器, 刚刚新建状态的容器就可以使用 start 来重启   docker start 后面可以跟容器名或者容器ID.

docker start e8abf8c09a26  和 docker start mysql5.6 作用一致

docker start e8abf8c09a26

docker exec

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS说明:

  • -d :分离模式: 在后台运行

  • -i :即使没有附加也保持STDIN 打开

  • -t :分配一个伪终端

用于访问运行的容器的内部

交互模式进入刚刚新建的 mysql5.6 的镜像, 

[docker@VM_121_116_centos ~]$ docker exec -it mysql5.6 /bin/bash
root@e8abf8c09a26:/# tail -30f /var/log/mysql/error.log 
2019-02-06 07:07:03 485 [Note] InnoDB: Using Linux native AIO
2019-02-06 07:07:03 485 [Note] InnoDB: Using CPU crc32 instructions
2019-02-06 07:07:03 485 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2019-02-06 07:07:03 485 [Note] InnoDB: Completed initialization of buffer pool
2019-02-06 07:07:03 485 [Note] InnoDB: Highest supported file format is Barracuda.
2019-02-06 07:07:03 485 [Note] InnoDB: 128 rollback segment(s) are active.

执行 exit 退出

当然 后面也可以直接跟命令, 这样就不会进入容器里面, 而是输出执行结果

[docker@VM_121_116_centos ~]$ docker exec mysql5.6 env

docker rm 

docker rm [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明:

  • -f :通过SIGKILL信号强制删除一个运行中的容器

  • -l :移除容器间的网络连接,而非容器本身

  • -v :-v 删除与容器关联的卷

删除容器, 不能删除运行中的容器, 运行的容器, 必须先stop, 再删除, docker rm 同样后面可以跟容器名称或者容器ID

比如删除 刚刚的Java容器

[docker@VM_121_116_centos ~]$ docker rm 6915333292ea

docker rmi

docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS说明:

  • -f :强制删除;

  • --no-prune :不移除该镜像的过程镜像,默认移除;

用于删除拉取到本地的镜像

刚刚java的容器移除了, 我们再把镜像删掉

[docker@VM_121_116_centos ~]$ docker rmi d23bdf5b1b1b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值