docker常用命令大全:
该命令转自:https://blog.csdn.net/liqz666/article/details/82180581
ip addr/ip link/ ifconfig:查看宿主机里ip地址(宿主机表示是虚拟机)
systemctl start docker/service start docker:启动docker服务
systemctl stop docker:关闭docker服务
service iptables start:启动防火墙
service iptables restart:重启防火墙
service iptables stop:关闭防火墙
docker run:启动container
docker seach xxxx(镜像名称):检索镜像
docker pull xxx(镜像名称):拉取镜像
docker images:列出镜像
docker --version:查看docker的版本信息
[root@localhost ~]:家目录
[root@localhost /]:根目录
docker exec Container Id:进入容器
docker exec -it NAMES(自定义名称) /bin/bash:进入--name命名的容器
docker exec NAMES(容器的自定义名称)-it bash:进入容器里进行操作
docker attach Container Id:进入到容器的终端
docker inspect IMAGE ID:显示容器或镜像的元数据
[root@(container id)]:比如[root@24527d42d3eb]表示已进入docker里的一个CONTAINER ID的容器内部
[root@24527d42d3eb]:exit(从容器里退出)。
docker ps:查看docker里运行的容器(status为Up....表示运行中)
docker ps -a:查看docker里已停止或正在运行的容器(status为Exit)
docker start CONTAINER ID :如果容器的状态为Exit,用它来启动容器
docker stop CONTAINER ID :停止正在运行的容器,删除一个容器必须先要停止
docker restart :当部署web项目的war文件,到tomcat里的webapps里面了,重启一下docker服务,就自动解压了war文件
docker rm CONTAINER ID :删除容器
docker rm $(docker ps -a -q):删除所有已停止的容器;
docekr rmi IMAGE ID:删除镜像
rm -rf xxxx:强制删除某个war.文件或目录、文件
docker cp /xxx.war CONTAINER ID :/usr/local/tomcat/webapps:从/根目录复制一个打包后的Java web war文件 到tomcat容器里的webapps工作目录里
docker exec CONTAINER ID ls /usr/local/tomcat:默认的 安装tomcat镜像的webapps目录
docker run -name xxx -p (自定义端口号,用来访问的):(容器的端口号:比如tomcat的8080,mysql的3306) -d docker.io/tomcat(镜像名称):表示在docker里运行一个tomcat容器,如果没有镜像,自动pull一个tomcat的镜像
--name 为容器取一个名字
-p 容器要映射的端口号
-d:后台运行
-t:进入终端
-i:获得一个交互式的连接,通过获取container的输入
/bin/bash:在container中启动一个bash shell
举例:docker run --name tomcat -p 8081:8080 -d tomcat
1、安装docker
1.1、首先安装好Oracle提供的小巧的虚拟机:Virtual Box;
1.2、然后安装好CentOS7,然后启动,登录,通过命令:ip addr 查看虚拟机的IP;
如果看不到IP,请参照这篇: https://blog.csdn.net/zengdongwen/article/details/105084036
1.3、使用Linux的客户端连接工具(这里用的是XShell),连接虚拟机;
执行命令:uname -r 查看内核版本,必须要3.10及以上;如果低于这个版本,要执行:yum update 进行更新操作
执行命令:yum install docker :在线安装docker
到了这里说明docker安装成功了。
1.4、启动docker,执行命令:systemctl start docker
[root@localhost ~]# systemctl start docker
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
如果出现这种情况,说明启动报错了,
journalctl -xe 执行这个命令,查看错误详情:
这是由于docker不支持图像内核驱动,SELinux不支持这个内核上的OrthALA2图形驱动程序。
解决办法:修改docker配置文件:vi /etc/sysconfig/docker
把OPTIONS一行改为:OPTIONS='--selinux-enabled=false --log-driver=journald --signature-verification=false'
按下“Esc”,输入“:”加“wq”保存退出vi编辑模式;
再执行命令:systemctl start docker 就可以启动成功了。
1.5、查看docker 版本
docker -v
docker ps(docker ps -a)
docker images
如果这些命令都能执行成功,证明之前安装的docker没有任何问题。
1.6、修改镜像仓库地址
直接从docker hub拉取镜像的速度很慢,所以我们把它的镜像地址改成阿里云的。
执行命令:vi /etc/docker/daemon.json 如果没有该文件,可以自己手动建,加上下面的内容:
{
"registry-mirrors": ["https://mj9kvemk.mirror.aliyuncs.com"]
}
2、docker安装tomcat
2.1 执行命令搜索tomcat镜像
docker search tomcat
其实这样子没多大意思,想拉取哪个镜像,还是要去官方的镜像仓库找对应的tags:docker hub,百度搜这个就能进入官网,官网地址:https://hub.docker.com/ ,可以直接搜索tomcat
2.2 拉取tomcat镜像
我这里执行的是:docker pull tomcat:jdk8-adoptopenjdk-hotspot
接下来就是慢慢的等待。
看到这样的情况就是镜像拉取成功了。
2.3 查看镜像和根据镜像启动容器:
docker images:查看所有的镜像
dokcer run -d -p 8888:8080 --name mytomcat afc0ee76aa56:以端口映射的方式启动容器;这样就可以通过访问 10.254.14.55:8888来访问到tomcat的首页。
2.4 查看启动的容器和所有的容器
docker ps:查看所有启动了的容器
docker ps -a:查看所有的容器,包括关闭了的容器;
我这里是一样的,因为我这里就一个容器。
2.5 查看虚拟机防火墙状态
service firewalld status
[root@localhost ~]# service firewalld status
Redirecting to /bin/systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
现在说明防火墙是关闭的,如果是开启的,需要关闭(service firewalld stop),在我们的主机浏览器才能访问到tomcat的首页:
2.6 访问
浏览器访问:http://10.254.14.55:8888,却发现了404错误:
怎么会这样呢?经过查询资料,发现别人也遇到过同样的情况,一般的话首页是在tomcat的webapps下面的ROOT项目中的,但是我们这里的tomcat下面存在一个webapps和webapps.dist目录,而且ROOT项目是存在与webapps.dist下面,如图:
执行命令 :docker exec -it 运行的tomcat容器name /bin/bash,查看tomcat的目录结构:
docker exec -it mytomcat /bin/bash :(上面我运行tomcat的时候,使用--name指定了名称是 mytomcat)
2.7 解决浏览器访问首页报404的问题
从2.6 看到,我们需要把webapps.dist下面的内容都移动到webapps下面,需要执行如下命令:
mv webapps webapps2:把webapps命名为webapps2
mv webapps.dist webapps:把webapps.dist命名为webapps
root@27610c8763d7:/usr/local/tomcat# mv webapps webapps2
root@27610c8763d7:/usr/local/tomcat# mv webapps.dist/ webapps
此时就可以在webapps下面看到了:
root@27610c8763d7:/usr/local/tomcat# cd webapps
root@27610c8763d7:/usr/local/tomcat/webapps# ls
docs examples host-manager manager ROOT
然后使用 exit 命令退出容器
执行命令:docker restart 容器ID :重新启动容器
浏览器再次访问 http://10.254.14.55:8888 ,终于成功:
3、docker按照mysql
3.1 拉取镜像
命令:docker pull mysql:5.6
[root@localhost ~]# docker pull mysql:5.6
Trying to pull repository docker.io/library/mysql ...
5.6: Pulling from docker.io/library/mysql
6d28e14ab8c8: Pull complete
dda15103a86a: Pull complete
55971d75ab8c: Pull complete
f1d4ea32020b: Pull complete
61420072af91: Pull complete
30862a48418b: Pull complete
c6c2ee3a9a57: Pull complete
0f4efadb31df: Pull complete
dd931017b211: Pull complete
488a86083079: Pull complete
921d4bdabca2: Pull complete
Digest: sha256:a72a05bcf3914c902070765a506b1c8c17c06400258e7b574965763099dee9e1
3.2 查看镜像
命令:docker images
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/tomcat jdk8-adoptopenjdk-hotspot afc0ee76aa56 4 days ago 324 MB
docker.io/mysql 5.6 c8078e8ab06d 2 weeks ago 303 MB
这时就能看到有两个镜像了,一个mysql和一个tomcat的。
3.3 运行镜像
注意:启动mysql的时候,一定要指定ROOT用户的密码,同时也要做好端口映射;
命令:docker run -d -p 3306:3306 --name mysql5.6 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
[root@localhost ~]# docker run -d -p 3306:3306 --name mysql5.6 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
143077a6c5cd7c5f3c7b63dc3ca8687a8ea8dacaab0b094cb2e39fcef8377804
命令说明:
docker run -d :-d表示后台运行;
-p 3306:3306:表示把主机的3306端口映射到mysql容器的3306端口;
--name mysql5.6:为容器指定名称;不指定的话会随机生成一个名字;
-e MYSQL_ROOT_PASSWORD=123456:为root用户指定密码,必须要指定,否则无法连接;
mysql:5.6:指定启动的镜像的名称和tags,name:tags,也可以用镜像ID:IMAGE ID
3.4 使用SQLyog远程连接
由此可见,使用docker按照一个mysql是多么的简单啊。