本文主要内容:Docker常用容器、镜像命令和安装Nginx与Tomcat
Docker帮助命令
1. docker version # 显示Docker的版本信息
2. docker info # 显示Docker的系统信息(包含镜像与容器的数量)
3. docker 命令 --help # 查看帮助(就是显示这个命令有什么可选项)
Docker镜像命令
-
docker images:显示本机上所有安装镜像
[root@MT ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 470671670cac 4 months ago 237MB hello-world latest bf756fb1ae65 4 months ago 13.3kB # 可选项 docker images -a # 列出所有的镜像 docker images -q # 只显示镜像的id [root@MT ~]# docker images -aq 470671670cac bf756fb1ae65
-
docker search:搜索镜像
[root@MT ~]# docker search mysql(镜像名) NAME DESCRIPTION STARS mysql MySQL is a widely used, open-source relation… 9553 mariadb MariaDB is a community-developed fork of MyS… 3471 # 可选项 docker search mysql -f=STARS=3000 # 列出镜像星数大于3000的镜像
-
docker pull:下载镜像
[root@MT ~]# docker pull mysql # 下载最新版本的MySQL [root@MT ~]# docker pull mysql:5.7 # 下载指定版本的MySQL
-
docker rmi:删除镜像
docker rmi -f 镜像id # 删除指定的镜像 docker rmi -f 镜像id 镜像id 镜像id 镜像id # 删除指定的镜像 docker rmi -f $(docker images -aq) # 删除全部的镜像
Docker容器命令
-
docker run [可选参数] 镜像名
[root@MT ~]# docker run 可选参数 镜像名 # 可选参数 --name=”xxx“ # 容器名字 -d # 后台模式运行 -it # 使用交互模式运行,进入容器查看内容 -p(小学) # 指定端口映射 如:-p 8080(宿主机):8080(容器) -P(大写) # 随机端口映射 # 测试启动进入与退出容器 [root@MT ~]# docker run -it centos /bin/bash # /bin/bash 是使用命令行进入 [root@6130f0353526 /]# ls # 此时已经进入Docker的CentOS容器 bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@6130f0353526 /]# exit exit [root@MT ~]#
-
docker ps [可选参数]:列出运行的容器
[root@MT ~]# docker ps 可选参数 # 可选参数 -a # 列出正在运行和历史运行过的容器 -q # 列出容器ID [root@MT ~]# docker ps -aq 6130f0353526 895577bc1ae7 f9fc9c23267d faab3fceb1d3
-
退出容器
exit # 容器直接退出 Ctrl + P + Q # 容器不停止退出
-
删除容器
docker rm -f 容器id # 删除指定容器(不能删除正在运行的,如需要rm-rf) docker rm -f $(docker ps -aq) # 删除所有容器
-
启动和停止容器操作
docker start 容器id # 启动容器 docker restart 容器id # 重启容器 docker stop 容器id # 停止正在运行的容器 docker kill 容器id # 强制停止
Docker其它命令
容器后台方式运行
[root@MT ~]# docker run -d centos
748d11ff226983ab8281fc6741087e6a3f349ad03f0cadafcd215aed894978dc
[root@MT ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 问题:我们此时已经发现启动CentOS,但是确查不到正在运行的容器
# 解释:Docker容器使用后台运行,就必须要有要一个前台进程,Docker发现没有应用,就会自动停止
查看日志
docker logs -tf 容器id # 查看实时日志
docker logs -t --tail 数量 容器id # 查看指定数量的日志
查看容器中的进程信息
docker top 容器id
查看镜像的元数据
docker inspect 容器id
进入当前正在运行的容器
# 通常我们是使用后台方式运行容器,因为我们可能需要进入容器,修改配置
# docker exec -it 容器ID /bin/bash (常用)
# docker attach 容器ID
# exec方式:就是类似新开一个窗口连接运行的容器
# attach方式:就是直接连入当前的容器
拷贝容器内文件到宿主机中
docker cp 容器id:文件路径(容器内) 目的路径(宿主机)
[root@MT ~]docker cp 1a9a6785c37c:/home/c.java /home/
Docker安装Nginx
# 1. 搜索镜像 search 建议大家去docker搜索,可以看到帮助文档
docker search nginx
# 2. 拉取镜像 docker pull nginx
docker pull nginx
# 3. 运行测试
# -d 后台运行
# --name 给容器命名
# -p 宿主机端口:容器内部端口(我这里使用阿里云的3344端口,前提要在阿里云安全组开放次端口)
docker run -d --name nginx -p 3344:80 nginx
# 4.查看镜像
docker ps
# 5.测试是否成功
curl localhost:3344 # 或者在浏览器输入ip:3344
Docker安装Tomcat
# 下载tomcat镜像
docker pull tomcat:9.0
# 运行tomcat镜像
docker run -d tomcat -p 3344:8080 tomcat
# 测试
curl localhost:3344 # 此时发现无法访问
# 原因:tomcat容器里面webapps目录下没有文件
# 进入容器
docker exec -it ef41045bea2b /bin/bash
cp -r webapps.dist/* webapps
# 重新测试 在浏览器输入ip:3344 --> 发现成功访问