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#

这里写图片描述

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

猜你喜欢

转载自blog.csdn.net/sumlyl/article/details/80573949
今日推荐