Docker 镜像仓库官方地址:https://hub.docker.com/。
【1】镜像基础操作
操作 | 命令 | 说明 |
---|---|---|
检索 | docker search 关键字 | 我们经常去docker hub上检索镜像的详细信息,如镜像的TAG |
拉取 | dockerpull 镜像名:tag | :tag是可选的,tag表示标签,多为软件的版本,默认是latest |
列表 | docker images | 查看所有本地镜像 |
删除 | dockerrmi image-id | 删除指定的本地镜像 |
【2】镜像操作实例
① 检索mysql镜像
命令(从docker官方仓库检索):
docker search mysql
② 将镜像下载本机
命令如下:
docker pull mysql
//默认最新版本
docker pull mysql:5.7.22
//拉取指定版本
③ 查看本地下载的镜像
命令如下:
docker images
④ 删除指定镜像
命令如下:
docker rmi image-id
如下所示,删除id 为 0d16d0a97dd1 的镜像:
【3】容器基础操作
将下载下来的镜像运行,生成对应的容器。
操作 | 命令 | 说明 |
---|---|---|
运行 | docker run –name container-name -d image-name | –name:自定义容器名 -d:后台运行 image-name:指定镜像模板 |
列表 | docker ps(查看运行中的容器) | 加上-a;可以查看所有容器 |
停止 | docker stop container-name/container-id | 停止当前你运行的容器 |
启动 | docker start container-name/container-id | 启动容器 |
删除 | docker rm container-name/container-id | 删除指定容器 |
端口映射 | -p 6379:6379 | -p:主机端口(映射到)容器内部的端口 |
容器日志 | docker logs container-name/container-id | 查看容器内软件运行日志 |
【4】容器操作实例
这里以Tomcat为例进行操作。
① 运行镜像,创建容器
[root@localhost ~]# docker run --name mytomcat -d tomcat:latest
6999c2f8d40f3c03e6953adb4c15391643d007d934af2933a9c0dbe173ee0664
② 查看容器(运行中/所有)
docker ps //查看运行中的容器
docker ps -a //查看所有容器
③ 启动/停止容器
docker start container-name/container-id
docker stop container-name/container-id
④ 容器端口映射
此时是不能够访问Tomcat的8080端口的,需要做主机到容器的端口映射。如下图:
进行端口映射:
[root@localhost ~]# docker run --name mytomcat -p 8080:8080 -d tomcat:latest
b9db8db45133b27b45e3b2f454039c76524930461a3abb05df63c9ad85998e27
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b9db8db45133 tomcat:latest "catalina.sh run" 7 seconds ago Up 6 seconds 0.0.0.0:8080->8080/tcp mytomcat
⑤ 删除容器
docker rm container-name/container-id
⑥ 查看容器运行日志
docker logs container-name/container-id
⑦ 创建多个tomcat
# 创建Tomcat8081
docker run --name tomcat8081 -p 8081:8080 -d tomcat:latest
#创建Tomcat8082
docker run --name tomcat8081 -p 8081:8080 -d tomcat:latest
访问8081端口:
其他Docker命令参阅官网:docker命令官网地址
【Tips】
创建多个Tomcat并启动容器的时候可能会遇到如下错误:
Error response from daemon: Cannot start container web: iptables failed: iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 8081 -j DNAT --to-destination 172.17.0.30:5000 ! -i docker0: iptables: No chain/target/match by that name.
解决办法:重建docker0网络恢复
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
service docker restart