Docker 常用命令
一、常用命令
基本命令
docker version
docker info
docker --help
官方文档:https://docs.docker.com/reference/
镜像命令
查看镜像:
// 查看所有的镜像
docker images
// 可选参数
Options:
-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 numeric IDs
[root@wsuo ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 4 months ago 13.3kB
REPOSITORY
:镜像的仓库源;TAG
:镜像的标签;IMAGE ID
:镜像的 ID;CREATED
:镜像的创建时间;SIZE
:镜像的大小。
比较常用的是显示全部镜像但是只显示 ID:
[root@wsuo ~]# docker images -aq
bf756fb1ae65
搜索镜像:
docker search
可选参数:
Options:
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print search using a Go template
--limit int Max number of search results (default 25)
--no-trunc Don't truncate output
搜索大于 3000 star 的镜像:
docker search mysql --filter=stars=3000
拉取镜像:
docker pull
下载 mysql:
docker pull mysql
后面可以加上版本信息,如果不写版本则默认是最新版。
docker pull mysql:5.7 # 下载5.7版本的mysql
下载一个 centOS
镜像来测试:
[root@wsuo ~]# docker pull centos
Using default tag: latest # 默认标签
latest: Pulling from library/centos # 仓库位置
8a29a15cefae: Pull complete
Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700 # 镜像的 ID 号
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest
删除镜像:
docker rmi
# 指定 ID:
docker rmi -f ID值
# 删除所有镜像
docker rmi -f $(docker images -aq)
容器命令
有了镜像才可以创建容器:
docker pull centos
创建容器并启动:
docker run [可选参数] image
--name: 容器名字 tomcat1, tomcat2 用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定端口 -p 8080
-p: 主机端口:容器端口 映射
-p: 容器端口
-P 随机指定端口
执行:
[root@wsuo ~]# docker run -it centos /bin/bash
[root@e25d08956b4a /]#
这其实就是一个套娃,我们目前使用的是容器,但是它不太完善。
从容器中退出到主机:
exit # 直接停止并退出
Ctrl+P+Q # 容器不停止退出
列出所有运行中的容器:
docker ps # 列出正在运行的容器
docker ps -a # 列出历史运行的容器
docker ps -a -n=2 # 显示最近运行的俩个容器
docker ps -q # 显示编号
[root@wsuo ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@wsuo ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e25d08956b4a centos "/bin/bash" 2 minutes ago Exited (0) 29 seconds ago inspiring_khayyam
291fe9863e6a hello-world "/hello" 45 hours ago Exited (0) 45 hours ago peaceful_fermi
删除容器:
docker rm 容器ID # 删除指定的容器,不能删除正在运行的容器
docker rm $(docker ps -aq) # 删除所有的容器
启动和停止容器的操作:
dokcer start 容器 ID # 启动容器
docker restart 容器 ID # 重启容器
docker stop 容器 ID # 停止容器
其他命令
后台启动容器
docker run -d 镜像名
查看日志命令
docker logs -tf --tail 10 容器ID # f 是 format 带上时间戳, 10 是显示10条日志信息
查看容器中的进程信息
docker top 容器ID
进入当前正在运行的容器
进入正在运行的容器,并开启一个新的终端:
docker exec -it 容器 ID bashshell
进入正在运行的命令行,而不是开启一个新的终端:
docker attach 容器 ID bashshell
从容器内拷贝文件到主机上
docker cp 容器ID:/home/demo.java /home
二、练习
1、部署 Nginx
首先在 https://hub.docker.com/ 搜索 nginx。
然后 docker pull nginx
。
docker run -d --name nginx01 -p 3344:80 nginx
# p 表示端口映射,即访问主机的 3344 端口相当于访问 nginx 的 80 端口。
# d 表示后台启动
# name 给容器命名
测试:
curl localhost:3344
返回结果:
# 进入容器修改配置文件
docker exec -it nginx01 /bin/bash
whereis nginx
cd /etc/nginx;ls
就可以修改 nginx.conf 文件了.
2、部署 Tomcat
下载镜像:
docker pull tomcat:9.0
后台启动并映射端口:
docker run -d -p 2000:8080 --name tomcat01 tomcat:9.0
访问之后:
这说明 Tomcat
是不完整的,没有默认访问路径。
因为我们拉取的默认是最小的镜像,将没有必要的都剔除了。
3、部署 ES+Kibana
- ES 十分的耗内存;
- ES 暴露的端口比较多;
ES 的数据需要挂载到安全目录。
docker run -d —name elasticsearch -p 2001:9200 -p 2002:9300 -e “discovery.type=single-node” elasticsearch:7.6.2
这里没有先 pull
,因为如果本地没有该镜像,他会自动去下载并运行。
直接访问 2001 端口:
还没有评论,来说两句吧...