400.docker命令

五 常见命令

5.1 基本命令

docker version # 查看docker版本
docker images # 查看所有已下载镜像,等价于:docker image ls 命令
docker container ls #	查看所有容器
docker ps #查看正在运行的容器
docker image prune # 清理临时的、没有被使用的镜像文件。-a, --all: 删除所有没有用的镜像,而不仅仅是临时文件;

5.2 拉取镜像

docker search mysql # 查看mysql相关镜像
docker pull mysql:5.7 # 拉取mysql镜像
docker image ls # 查看所有已下载镜像

5.3 删除镜像

比如我们要删除我们下载的 mysql 镜像。

通过 docker rmi [image] (等价于docker image rm [image])删除镜像之前首先要确保这个镜像没有被容器引用(可以通过标签名称或者镜像 ID删除)。

通过我们前面讲的docker ps命令即可查看。

➜  ~ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
c4cd691d9f80        mysql:5.7           "docker-entrypoint.s…"   7 weeks ago         Up 12 days          0.0.0.0:3306->3306/tcp, 33060/tcp   mysql

可以看到 mysql 正在被 id 为 c4cd691d9f80 的容器引用,我们需要首先通过 docker stop c4cd691d9f80 或者 docker stop mysql暂停这个容器。

然后查看 mysql 镜像的 id

➜  ~ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
mysql                   5.7                 f6509bac4980        3 months ago        373MB

通过 IMAGE ID 或者 REPOSITORY 名字即可删除

docker rmi f6509bac4980 #  或者 docker rmim mysql 

Docker的常用命令

帮助命令

docker version #显示docker的版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help #万能命令
docker version #显示docker的版本信息
docker info #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help #万能命令

镜像命令

docker images
[root@Anzia ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    d1165f221234   4 weeks ago   13.3kB
#解释
REPOSITORY	镜像的仓库源
TAG			镜像的标签
IMAGE ID	镜像的id
CREATED		镜像的创建时间
SIZE		镜像的大小

#可选项
  -a, --all             Show all images (default hides intermediate images)
      --digests         Show digests
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print images using a Go template
      --no-trunc        Don't truncate output
  -q, --quiet           Only show image IDs

docker images -a #列出所有镜像
docker images -q #只显示镜像的id
docker search 搜索镜像
[root@Anzia ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10702     [OK]       
#可选项,通过收藏来过滤
[root@Anzia ~]# docker search mysql --filter=stars=5000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   10702     [OK]  
docker pull 下载镜像
#下载镜像 docker pull 镜像名[:tag]
[root@Anzia ~]# docker pull mysql
Using default tag: latest #如果不写tag,默认就是latest
latest: Pulling from library/mysql
a076a628af6f: Pull complete  #分层下载,docker images的核心,联合文件系统
f6c208f3f991: Pull complete 
88a9455a9165: Pull complete 
406c9b8427c6: Pull complete 
7c88599c0b25: Pull complete 
25b5c6debdaf: Pull complete 
43a5816f1617: Pull complete 
1a8c919e89bf: Pull complete 
9f3cf4bd1a07: Pull complete 
80539cea118d: Pull complete 
201b3cad54ce: Pull complete 
944ba37e1c06: Pull complete 
Digest: sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8c #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址

#等价于它
docker pull mysql
docker pull docker.io/library/mysql:latest

#指定版本地址
[root@Anzia ~]# docker pull mysql:5.7
5.7: Pulling from library/mysql
a076a628af6f: Already exists 
f6c208f3f991: Already exists 
88a9455a9165: Already exists 
406c9b8427c6: Already exists 
7c88599c0b25: Already exists 
25b5c6debdaf: Already exists 
43a5816f1617: Already exists 
1831ac1245f4: Pull complete 
37677b8c1f79: Pull complete 
27e4ac3b0f6e: Pull complete 
7227baa8c445: Pull complete 
Digest: sha256:b3d1eff023f698cd433695c9506171f0d08a8f92a0c8063c1a4d9db9a55808df
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j2MEjVNY-1632744429037)(docker命令.assets/image-20210406082056007.png)]

docker rmi 删除镜像
docker rmi -f 镜像id #删除指定镜像
docker rmi -f 镜像id 镜像id 镜像id #删除多个镜像
docker rmi -f $(docker images -aq) #删除全部镜像

容器命令

说明:我们有了镜像才能创建容器,linux,下载一个centos镜像来测试学习

docker pull centos
docker run image新建容器并启动
docker run [可选参数] image

#参数说明
--name="Name" 容器名字 tomcat01 tomcat02 用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080
	-p ip:主机端口:容器端口
	-p 主机端口:容器端口 (常用)
	-p 容器端口
-P 随机指定端口

#测试,启动并进入容器
[root@Anzia ~]# docker run -it centos /bin/bash
[root@c7da5d34f5eb /]# ls #查看容器内的centos,基础版本,很多命令都是不完善的
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

#从容器中退回到主机
[root@c7da5d34f5eb /]# exit
exit
docker run -d image后台启动容器
#命令 docker run -d 镜像名
[root@Anzia //]# docker run -d centos

#问题:docker ps 发现centos停止了

#常见的坑,docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
#nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有进程了
docker ps列出所有运行的容器
#docker ps 命令
   #列出当前正在运行的容器
-a #列出当前正在运行的容器 + 带出历史运行过的容器
-n=#显示最近创建的容器
-q #只显示容器的编号

[root@Anzia //]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@Anzia //]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS                      PORTS     NAMES
c7da5d34f5eb   centos         "/bin/bash"   15 minutes ago   Exited (0) 12 minutes ago             adoring_gagarin
d9a74f16ff3d   d1165f221234   "/hello"      10 hours ago     Exited (0) 10 hours ago               compassionate_golick
62d61b2250aa   d1165f221234   "/hello"      11 days ago      Exited (0) 11 days ago                cool_keller
exit退出容器
exit #直接停止容器并退出
ctrl + p + q #容器不停止退出
rm删除容器
docker rm 容器id #删除指定容器,不能删除正在运行的容器,如果要强制删除 rm -f
docker rm -f $(docker ps -aq) #删除所有容器
docker ps -a -q|xargs docker rm #删除所有的容器
启动 停止 重启 杀死 容器的操作
docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器
docker kill 容器id #强制停止当前正在运行的容器

常用基本命令

docker log 查看日志
docker log -f -t --tail 容器,没有日志

#自己编写一段shell脚本
[root@Anzia //]# docker run -d centos /bin/sh -c "while true;do echo kuangshen;sleep 1;done"

[root@Anzia //]# docker ps
CONTAINER ID   IMAGE     
95d1a498a3b7   centos    

#显示日志
-t #时间戳
-f #动态显示
--tail 数字 #要显示的日志条数
[root@Anzia //]# docker logs -f -t --tail 10 95d1a498a3b7
docker top 容器id查看容器中进程信息
#命令 docker top 容器id
[root@Anzia //]# docker top 95d1a498a3b7
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                21077               21043               0                   13:42               ?                   00:00:00            /bin/sh -c while true;do echo kuangshen;sleep 1;done
root                21597               21077               0                   13:49               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
docker inspect查看镜像的元数据
#命令 docker inspect 容器id
[root@Anzia //]# docker inspect 95d1a498a3b7
docker exec -it 容器id进入当前正在运行的容器
#我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置

#命令
docker exec -it 容器id bashSell

#测试
[root@Anzia //]# docker exec -it 95d1a498a3b7 /bin/bash
[root@95d1a498a3b7 /]# ls
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr

#方式二
docker attach 容器id

#测试
[root@Anzia ~]# docker attach 95d1a498a3b7 /bin/bash

# docker exec    #进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach  #进入容器正在执行的终端,不会启动新的进程
docker cp 从容器内拷贝文件到主机内
docker ps 容器id:容器内路径 目的主机路径

#查看当前主机目录下
[root@Anzia home]# touch kuangshen.java
[root@Anzia home]# ls
kuangshen.java
[root@Anzia home]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS              PORTS     NAMES
4132744dd350   centos    "/bin/bash"   About a minute ago   Up About a minute             competent_shtern
#进入docker容器内部
[root@Anzia home]# docker attach 4132744dd350
[root@4132744dd350 /]# cd /home
#在容器内新建一个文件
[root@4132744dd350 home]# touch test.java
[root@4132744dd350 home]# ls
test.java
[root@4132744dd350 home]# exit
exit
[root@Anzia home]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
4132744dd350   centos    "/bin/bash"   3 minutes ago   Exited (0) 6 seconds ago             competent_shtern
#将这文件拷贝出来到这个主机上
[root@Anzia home]# docker cp 4132744dd350:/home/test.java /home
[root@Anzia home]# ls
kuangshen.java  test.java

#拷贝是一个手动的过程,未来我们使用 -v 的技术,可以实现同步

小结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IFBUtajR-1632744429038)(docker命令.assets/Rda128e7d249204ab348c12bd3cb89d43.png)]

  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

作业练习

Docker安装Nginx
#1. 搜索镜像 search 建议大家去docker hub搜索,可以看到帮助文档
#2. 下载镜像 pull
#3. 运行测试
[root@Anzia home]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    f6d0b4767a6c   2 months ago   133MB
centos       latest    300e315adb2f   3 months ago   209MB
#-d 后台运行
#--name 给容器命名
#-p 宿主机端口,容器内部端口
[root@Anzia home]# docker run -d --name nginx01 -p:3344:80 nginx
9ebe86a481ff92e44f92a4cacadd322fd1ba931d89cb4fdaddd5809944cdef19
[root@Anzia home]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                  NAMES
9ebe86a481ff   nginx     "/docker-entrypoint.…"   8 seconds ago   Up 7 seconds   0.0.0.0:3344->80/tcp   nginx01
[root@Anzia home]# curl localhost:3344

#进入容器
[root@Anzia home]# docker exec -it nginx01 /bin/bash
root@9ebe86a481ff:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@9ebe86a481ff:/# cd /etc/nginx
root@9ebe86a481ff:/etc/nginx# ls
conf.d		koi-utf  mime.types  nginx.conf   uwsgi_params
fastcgi_params	koi-win  modules     scgi_params  win-utf

端口暴露的概念

查看源图像

思考问题:我们每次改动nginx配置文件,都需要进入容器内部?十分的麻烦,我要是在容器外部提供一个映射路径,达到在容器修改文件,容器内部就可以自动修改? -v 数据卷

docker来装一个tomcat
#官方的使用
docker run -it --rm tomcat:9.0

#我们之前的启动都是在后台,停止了容器之后,容器还是可以查到 docker run -it --rm 一般用来测试,用完删除

#下载再删除
[root@Anzia home]# docker pull tomcat:9.0

#启动运行
[root@Anzia home]# docker run -d -p 3355:8080 --name tomcat01 tomcat:9.0

#测试访问没有问题

#进入容器
[root@Anzia home]# docker run -d -p 9090:8080 --name tomcat01 tomcat:9.0
756d83b604dce9a60612be9d3c6036ccf88ab6c61d916cbd740b919d81c5155f
[root@Anzia home]# docker exec -it tomcat01 /bin/bash

#发现问题:1. linux命令少了 2. 没有webapps。阿里云镜像的原因,默认是最小的镜像,所有不必要的都剔除掉
#保证最小可运行环境

思考问题:我们以后要部署项目,如果每次都要进入容器是不是十分麻烦?我要是可以在容器外部提供一个映射路径,webapps,我们在外部放置项目,就自动同步到内部就好了

部署 es + kibana
#es 暴露的端口很多
#es 十分的耗内存
#es 的数据一般需要放置到安全目录挂载
# --net somenetwork ? 网络配置

#启动elasticsearch
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2

#查看 docker stats

#测试 curl localhost:9200

#增加内存限制
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xms512m" elasticsearch:7.6.2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9cOCii5F-1632744429040)(docker命令.assets/image-20210406162627692.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gX9AwPml-1632744429041)(docker命令.assets/image-20210406162721093.png)]

使用kibana连接es,思考网络如何才能连接过去

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dYUSUosg-1632744429041)(docker命令.assets/OIP-1617697904581.jfif)]

可视化

  • portainer(先用这个)
docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
  • Rancher(CI/CD再用)

什么是portainer?

Docker图形化界面管理!提供一个后台面板供我们操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ONSX8QL-1632744429042)(docker命令.assets/image-20210406172844174.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eNliRxif-1632744429042)(docker命令.assets/image-20210406173037023.png)]


[外链图片转存中...(img-9cOCii5F-1632744429040)]

[外链图片转存中...(img-gX9AwPml-1632744429041)]

> 使用kibana连接es,思考网络如何才能连接过去

[外链图片转存中...(img-dYUSUosg-1632744429041)]

### 可视化

- portainer(先用这个)

~~~bash
docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
  • Rancher(CI/CD再用)

什么是portainer?

Docker图形化界面管理!提供一个后台面板供我们操作

[外链图片转存中…(img-3ONSX8QL-1632744429042)]

[外链图片转存中…(img-eNliRxif-1632744429042)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X9KqDDtW-1632744429043)(docker命令.assets/image-20210406173046042.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值