Dokcer的简单使用

Docker常用命令

帮助命令

 docker version #docker版本
 docker info    #docker的系统消息,包括镜像和容器的数量
 docker --help  #帮助命令

镜像命令

 docker images #查看所有本地的主机上的镜像
 [root@iZ2zeamm1ijxugkxau1bdnZ ~]# docker images
 REPOSITORY         TAG                 IMAGE ID           CREATED             SIZE
 hello-world         latest             bf756fb1ae65        9 months ago        13.3kB
 
 REPOSITORY 镜像的仓库源
 TAG       镜像的标签
 IMAGE ID   镜像的id
 CREATED   镜像的创建时间
 SIZE       镜像的大小
 
 #可选项
 -a--all  #列出所有镜像
 -q--quiet #只显示镜像的id
 
 docker search --help
 
 docker pull #下载镜像 docker pull 镜像名[:tag]
 docker pull mysql:5.7 #指定版本
 
 docker rmi -f ${镜像id} #通过镜像id删除镜像
 docker rmi -f ${镜像id} ${镜像id} ${镜像id} #通过镜像id删除多个镜像
 docker rmi -f ${docker images -aq} #删除全部容器
 

容器命令

有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习

 docker run [可选参数] image
 
 #参数说明
 --name="Name" 容器名字 tomcat01 tomcat02 ,用来区分容器
 -d             后台方式运行
 -it           使用交互方式运行,进入容器查看内容
 -p             指定容器的端口
    -p ip:主机端口:主机端口
    -p 主机端口:容器端口(常用)
    -p 容器端口
 -P             随机指定端口
 
 #测试,启动进入容器
 [root@iZ2zeamm1ijxugkxau1bdnZ /]# docker run -it centos /bin/bash
 [root@ef7a047fbd55 /]# ls  
 bin etc   lib lost+found mnt proc run   srv tmp var
 dev home lib64 media       opt root sbin sys usr
 
 docker ps
       #列出当前正在运行的容器
 -a    #列出当前正在运行的容器+带出历史运行过的容器
 -n=?  #显示最近创建的容器
 -q    #只显示容器的编号
 
 #退出容器
 exit  #直接容器停止并退出
 Ctrl + P + Q 容器不停止退出
 
 #删除容器
 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 ps,发现centos 停止了

docker容器用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止

 #后台启动容器
 docker run -it centos /bin/bash
 
 #查看日志
 docker logs -tf --tail 10 dec7b868912bf
 docker logs -f -t --tail num 容器id
 docker logs -tf 容器id
 --tf      #显示日志
 --tail number  #要显示的日志条数
 
 #查看容器中进程信息ps
 docker top 容器id
 #查看服务器状态cpu
 docker stats
 
 #查看镜像的元数据
 docker inspect 容器id
 
 #进入当前正在运行的容器
 #我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
 docker exec -it 容器id bashShell
 
 #方式二
 docker attach 容器id
 #docker exec 进入容器后开启一个新的终端,可以在里面操作(常用)
 #docker attach 进入容器正在执行的终端,不会启动新的进程!
 
 #从容器内拷贝文件到主机上
 docker cp 容器id:容器内路径   目的的主机路径
 docker cp b45456234:/home/test.java /home
 
 #tomcat
 #官方的使用
 docker run -it --rm tomcat:9.0
 #我们之前的启动都是后台,停止了容器之后,容器还是可以查到 docker run -it --rm,一般用来测试,用完就删除
 #下载再启动
 docker pull tomcat
 #启动
 docker run -d -p 3355:8080 --name tomcat01 tomcat
 #测试访问有没有问题(阿里云安全组要打开)
 #进入容器
 docker exec -it tomcat01 /bin/bash
 #发现问题 1.linux命令少了 2.没有webapps 阿里云镜像的原因,默认是最小的镜像,所有不必要的都剔除掉。
 #保证最小可运行的环境!
 
 思考问题:我们以后要部署项目,如果每次都要进入容器十分麻烦,我要是可以再容器外部提供一个映射路径,webapps,我们可以在外部放置项目,就自动同步到内部就好了!
 
 #部署es+kibana
 #es 暴露的端口很多!
 #es 十分的耗内存
 #es 的数据一般需要放置到安全目录 挂载
 # --net somenetwork ? 网络配置
 
 #启动elasticsearch
 docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag:7.6.2
 
 #es是个十分耗内存的1点几个G
 #赶紧关闭,增加内存的限制,修改配置文件 -e
 docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -xmx512m" elasticsearch:tag:7.6.2

可视化

  • portainer

 docker run -d-p8088:9000 \
 --restart=always -v /var/run/docker.sock:/var/run/docker.sork --privileged=true portainer/portainer

什么是portainer?

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

 docker run -d -p 8088:9000 \
 --restart=always -v /var/run/docker.sock:/var/run/docker.sork --privileged=true portainer/portainer

测试访问:http://ip:8088/