Docker环境的命令不是很熟悉,很多时候遇到要用的时候就要花费很多时间问度娘,还是自己在博客里面记录一下,方便后面查看。(本篇文章是基于Centos7编写,其他版本可能有所不同)
1. 启动和停止Docker
启动和停止Docker容器的两种方式:
- 使用
systemctl
命令启动、停止
systemctl start docker # 启动Docker
systemctl stop docker # 停止docker
- 使用后端运行方式启动,使用杀进程的方式关闭
dockerd & # 后台运行方式启动
ps -ef | grep docker # 查docker进程
kill [进程ID] # 根据进程ID关闭
如果需要Docker在开启后自动启动使用下面命令:
# 两个命令二选一
systemctl enable docker
chkconfig docker on
2. 查看Docker运行状态
查看Docker是否正常运行使用下面命令:
systemctl status docker
3. 加载已有镜像
加载已有的镜像到Docker中:
docker load < xxx.tar # xxx.tar表示镜像文件
4. 从docker仓库中拉取docker镜像
默认是从官网仓库中拉取,也可以从配置的国内镜像加速器中拉取(镜像加速器配置方式Docker基础概念理解)
docker search tomcat # 查询tomcat目前有什么版本镜像可以拉取,返回是个列表
docker pull tomcat # 表示拉取最新版本tomcat镜像
docker pull tomcat:8 # 表示拉取指定版本的tomcat镜像
5. 查看Docker内的镜像列表
可以通过以下两个命令实现:
docker image list
docker images
6. 启动Docker镜像生成容器
生成容器的命令根据实际使用确定,下面是我常用的命令:
docker run -dit --name [容器名称] -v [容器目录]:[宿主挂载目录] -p [IP:端口:端口] [镜像ID] /bin/bash
说明:
- 容器名称根据实际情况自定义,容器名称是唯一的不能重复
- 容器目录和宿主挂载目录,表示在容器中可以访问宿主机指定目录下的所有文件,这种挂载方式又被称为数据卷
- IP和端口,一般请求进入是请求宿主机的端口,这个时候就需要将此端口和容器关联,可以配置多个
- 镜像ID,这个可以通过查看镜像列表获取,表示你将那个镜像加载为容器
示例:
docker run -dit --name my_container_name -v /home/my/:/home/my/ -p 8081:8080 -p 9091:9090 edf312c432d232 /bin/bash
7. 查看容器列表
查看容器列表有几个不同的命令,我只是用一个如下:
docker ps -a # 查看所有容器,包含运行中和停机的容器
docker ps # 查看运行中容器
8. 查看容器详细信息
docker inspect [容器ID]
9. 进入容器
容器启动后,需要进入容器做相关的操作,这个时候就需要进入到容器内部。
# 容器ID可以通过查看容器列表获得
docker attach [容器ID] # 这种方式个人最常用
docker exec -it [容器ID] /bin/bash # 这种方式也是可以的
10. 删除镜像和容器
- 删除镜像
docker rmi [镜像ID] # 如果镜像有关联容器,将执行失败
docker rmi -f [镜像ID] # 强制删除镜像,同时删除关联的容器
- 删除容器
docker rm [容器ID] # 删除容器,如果容器在运行貌似也是删不掉的
docker rm -f [容器ID] # 强制删除
11. 生成自定义镜像文件
基本格式:docker commit -m="这个是描述信息" -a="这是作者的名字" [容器ID] [新镜像名:版本号]
docker commit -m="new image" -a="itcrud" 81233a354ea new-image:1.0
12. 不进入容器情况下在容器内执行命令☆☆☆☆☆
这个很重要,而且经常遇到,比如启动容器内的tomcat,进入容器执行是可以的,但是在外部执行方便。执行命令如下:
docker exec -d [容器名称] /bin/bash -c [需要执行的命令] -g "daemon off;"
示例:
docker exec -d my_container_name /bin/bash -c "nohup java -jar /home/my/xxx.jar > /home/my/log/xxx.log 2>&1 &" -g "daemon off;"