1.列出所有容器
ps -[a] [l] -a:查看所有运行过的容器 -l:查看最近创建的一个容器 -q:只显示容器的编号
docker ps -aq #显示当前所有容器的编号
2.运行容器
Docker run -it --name demo xxxx --name 指定容器名称 -i代表 iteractive(交互式的,相互作用的) -t代表 开启tty终端 -P将容器暴露的所有端口映射(随机指定) -p指定映射的端口 - docker run -p 80 -it ubantu /bin/bash 只指定容器端口,宿主机端口随机映射 - docker run -p 8080:80 -it ubantu /bin/bash 同时指定宿主机和容器端口 宿主机端口和容器端口绑定 - docker run -p 0.0.0.0:80 -it ubantu /bin/bash 指定ip和容器端口 - docker run -p 0.0.0.0:8080:80 -it ubantu /bin/bash 指定ip,宿主机端口和容器端口 -it 使用交互方式运行,进入容器查看内容 docker run -d demo 以守护进程形式启动容器
docker run -d centos:7 /bin/sh -c "while true; do echo hello world!;sleep 1; done;" # -c 指定命令
# docker run -d [镜像名]
docker run -d centos #问题:docker ps 可以观察到 centos停止了
docker容器使用后台运行,必须一个前台进程,docker发现没有应用,就会停止运行
3.退出容器
exit #直接停止容器并退出 Ctrl+p+q #容器不停止,退出 Ctrl P+Ctrl Q 以后台形式运行容器.
4.查看镜像
docker images [-a] [-f] [--no-trunc] [-q] -f:过滤条件 --no-trunc:不截断唯一ID,默认截断 -q:只显示唯一ID
docker images ubantu 查看ubantu仓库下的所有镜像
5.删除镜像
关于删除镜像: 1.需要先docker ps -a 查看正在运行和已经关闭的container,必须先删除container 2.docker rm [容器ID] 删除容器(只能删除已经停止的容器) 3.docker rmi [镜像ID] 删除镜像 docker rmi ubantu:12.04 ubantu:precise 删除多个镜像 docker rmi $(docker images ubantu -q) 删除ubantu仓库下的所有镜像
6.删除容器
docker rm 容器id #删除指定容器 docker rm -f $(docker ps -aq) #删除所有容器 docker ps -aq | xargs docker rm #删除所有容器
7.启动和停止容器
#备注:start/stop/kill 后可以用容器id或是容器name docker start [-i] demo 重新启动已经停止的容器 docker stop demo 停止容器 docker kill demo 强制停止容器 docker restart [容器id] #重启容器
8.查看日志
docker logs -tf --tail 10 demo 查看容器日志 -t显示时间戳 -f持续刷新 --tail 只显示最新的10条
9.查看容器中进程信息
docker top demo 查看容器内进程情况
docker port demo 查看容器端口绑定情况
Docker inspect [容器名称/镜像ID] 检查容器/镜像(相关配置信息)
10.进入当前正在运行的容器
docker exec -it demo /bin/bash 在容器内以交互式启动新进程 ag: docker exec demo nginx 在demo容器中启动nginx服务 docker attach [容器id] 重新进入后台运行的容器,使用正在执行的终端,不会启动新的终端
docker exec # 进入容器后开启一个新的终端,可以在里面进行操作
11.从容器中拷贝文件到主机
docker cp 容器id:容器内路径 目的地主机路径 # docker cp 33862d00fce0:/home /home 注意:如果要将宿主机文件"拷贝"到容器,一般使用挂载
13.安装es
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms256m -Xmx256m" elasticsearch
docker stats #显示容器使用的系统资源
14.安装mysql
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql mysql:5.7 将mysql 配置文件挂载到宿主机,并且将mysql数据文件挂载到宿主机。使用-v 可以挂载多个文件
15.思考
每次改动nginx配置文件,都需要进入容器内部。是否可以在容器外部提供一个映射路径,达到在容器外部修改配置文件,容器内部同时变更。
这种场景使用容器卷技术可以完美解决。