3、为什么使用docker?之docker常用命令

回忆上一篇。我们学习了怎么安装docker,然后再利用docker拉取了镜像,构建了镜像,最后教大家怎么在docker运行我们自己构建的镜像。到这里相信你对docker的基本原理有了一定了解,同时也知道怎么在docker部署简单的单机版本jar项目了。
现在,可能新同学对docker的命令还不是了解。那么,这一节,我们就一起来加强学习下docker的常用命令。

docker命令也分为三大块,分别对应我们所说的三件套(仓库,镜像,容器)。现在我就分三个模块给大家讲解,所以docker命令其实就对三个部位的不通操作,明白了这点命令就很好记住,很好查了,否正很难记住那么多命令的。我们看着下面这张图,主要讲解一些项目中经常用到的命令。
这里写图片描述

一、仓库镜像管理命令
功能指令备注示例
从镜像服务器中查找镜像docker search [OPTIONS] <镜像名>OPTIONS可选指令:
–automated :只列出 automated build类型的镜像;
–no-trunc :显示完整的镜像描述;
-s :列出收藏数不小于指定值的镜像。
sudo docker search -s 10 java
拉取镜像docker pull <镜像名称 : tag>相当于下载。tag,镜像版本号sudo docker pull java:8
创建镜像docker build -t <镜像名> 需要编码dockerfile文件才能使用该命令sudo docker build -t web .
查找所有镜像docker images查询所有本地仓库的镜像,并不去是远端仓库的sudo docker images
删除本地一个或多少镜像。docker rmi [OPTIONS] <镜像名:tag>OPTIONS可选指令:
f:强制删除
sudo docker rmi java:8
查看指定镜像的创建历史docker history [OPTIONS] <镜像名:tag>OPTIONS可选指令:
-H :以可读的格式打印镜像大小和日期,默认为true;
–no-trunc :显示完整的提交记录;
-q :仅列出提交记录ID。
sudo docker history web
二、镜像运行命令
功能指令备注示例
运行一个新容器docker run [OPTIONS] <镜像名:版本>OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-p:指定暴露的内部端口和外部端口
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
–name=”web”: 为容器指定一个名称;
–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=[]: 开放一个端口或一组端口;
sudo run –name web -d -p 8080:8080 web
三、容器管理命令
功能指令备注示例
查看容器日志docker logs [OPTIONS] <容器名或者ID>OPTIONS说明:
-f : 跟踪日志输出
–since :显示某个开始时间的所有日志
-t : 显示时间戳
–tail :仅列出最新N条容器日志
sudo docker logs -f web
查看正在运行的容器docker ps [OPTIONS]OPTIONS说明:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
–format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
–no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
sudo docker ps
删除多个容器docker rm [OPTIONS] <容器名称或者ID>OPTIONS说明:
-f :通过SIGKILL信号强制删除一个运行中的容器
-l :移除容器间的网络连接,而非容器本身
v :-v 删除与容器关联的卷
删除web1和web2容器
sudo docker rm -f web1、web2

删除所有容器
sudo docker rm $(docker ps -a -q)
删除当个容器docker rm <容器名或ID>删除单个容器sudo docker rm web1
停止一个容器docker stop <容器名或ID>停止一个容器docker stop web
杀死一个容器docker kill <容器名或ID>杀死一个容器docker kill web
将停止的容器拉起(启动)docker start <容器名或ID>将停止的容器拉起(启动)docker start web
进入容器内部docker exec -it 容器名或ID /bin/bash进入容器sudo docker exec -it 775c7c9ee1e1 /bin/bash
拷贝文件docker cp拷贝文件sudo docker cp de84eaa7e453:/home/web/logs/2018-06-05/info.log .
案例实践:
1、如何从容器里面拷文件到宿主机?

需求:将容器/home/web/logs/2018-06-05/info.log拷贝到宿主机上

命令:docker cp <容器名>:<要拷贝的文件在容器里面的路径> < 要拷贝到宿主机的相应路径>

示例:

#在宿主机执行下面的命令 
docker cp de84eaa7e453:/home/web/logs/2018-06-05/info.log .

注:“.”表示拷贝到当前路径,也可是设定如:/home/xxx/xxx/xxxx

执行过程展示:

root@ubuntu:/home/kim/project/web# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
de84eaa7e453        web                 "java -Djava.securit…"   30 minutes ago      Up 30 minutes       0.0.0.0:8080->8080/tcp    web
2730dee4f305        mysql:5.7           "docker-entrypoint.s…"   5 hours ago         Up 5 hours          0.0.0.0:13306->3306/tcp   apollo-db
root@ubuntu:/home/kim/project/web# ls
Dockerfile  web-1.0.1.jar  web-1.0.2.jar
root@ubuntu:/home/kim/project/web# docker cp de84eaa7e453:/home/web/logs/2018-06-05/info.log .
root@ubuntu:/home/kim/project/web# ls
Dockerfile  info.log  web-1.0.1.jar  web-1.0.2.jar
root@ubuntu:/home/kim/project/web#

这里写图片描述

2、如何从宿主机拷文件到容器里面?

需求:从宿主机当前文件夹下,将web-1.0.2.ja拷贝到de84eaa7e453容器的 /home/web下面

docker cp <宿主机文件路径> <容器ID>:<容器存放文件路径>

示例:

#  在宿主机执行下面的命令 
docker cp web-1.0.2.jar de84eaa7e453:/home/web

这里写图片描述

执行过程展示:

root@ubuntu:/home/kim/project/web# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
de84eaa7e453        web                 "java -Djava.securit…"   16 minutes ago      Up 16 minutes       0.0.0.0:8080->8080/tcp    web
2730dee4f305        mysql:5.7           "docker-entrypoint.s…"   5 hours ago         Up 5 hours          0.0.0.0:13306->3306/tcp   apollo-db
root@ubuntu:/home/kim/project/web# ls
Dockerfile  web-1.0.1.jar  web-1.0.2.jar
root@ubuntu:/home/kim/project/web# docker cp web-1.0.2.jar de84eaa7e453:/home/web
root@ubuntu:/home/kim/project/web# docker exec -it de84eaa7e453 /bin/bash
root@de84eaa7e453:/# cd home/web
root@de84eaa7e453:/home/web# ls
app.jar  logs  web-1.0.1.jar  web-1.0.2.jar #拷贝进来的文件
root@de84eaa7e453:/home/web#

这里写图片描述

好了,常用命令就用到这里了。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值