Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中, 然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布 出去,其他使用者可以直接使用这个镜像。 运行中的这个镜像称为容器,容器启动是非常快速的。类似windows里面的ghost操 作系统,安装好后什么都有了。
确认要安装docker的系统的linux内核高于3.10,CentOS7以下,linux内核都是2.x,所以,如果要使用yum update
指令升级的话,一定要编译,否则会开不了机,而且,百度各种解决方案都没用(不要问我为什么知道),升级内核,也很慢,要下载1000+个文件。所以,建议,直接装一个CentOS7。
uname -r 查看内核版本
安装docker
yum install docker
查看docker版本
docker -v
查看docker的状态
service docker status
启动docker
service docker start
如果想让linux系统开机就启动docker的话,可以用systemctl enable docker
停止docker
service docker stop
操作 | 命令 | 说明 |
---|---|---|
检索 | docker search 关键字 eg:docker search redis | 我们经常去docker hub上检索镜像的详细信息,如镜像的TAG。 |
拉取 | docker pull 镜像名:tag | tag是可选的,tag表示标签,多为软件的版本,默认是latest |
列表 | docker images | 查看所有本地镜像 |
删除 | docker rmi image-id | 删除指定的本地镜像 |
修改 /etc/docker/daemon.json ,写入如下内容(如果文件不存在请新建该文件)
vim /etc/docker/daemon.json
# 内容:
{
"registry-mirrors":["http://hub-mirror.c.163.com"]
}
国内镜像源 | 地址 |
---|---|
Docker 官方中国区 | https://registry.docker-cn.com |
网易 | http://hub-mirror.c.163.com |
中国科技大学 | https://docker.mirrors.ustc.edu.cn |
阿里云 | https://pee6w651.mirror.aliyuncs.com |
以tomcat 为例
docker pull tomcat
如需选择具体版本,可以在docker 官网搜索tomcat
docker pull tomcat:7.0.96-jdk8-adoptopenjdk-hotspot
docker run --name mytomcat -d tomcat:latest
`--name`:给容器起个名字
-d:后台启动,不加就是前端启动,然后你就只能开一个新的窗口连接,不然就望着黑乎乎的窗口,啥也干不了,Ctrl+C即可退出,当然,容器也会关闭
docker ps
docker stop 容器的id
# 或者
docker stop 容器的名称,就是--name给起的哪个名字
docker ps -a
docker start 容器id/名字
docker rm 容器id/名字
docker run -d -p 8888:8080 tomcat
-d:后台运行 -p: 将主机的端口映射到容器的一个端口 主机端口(8888):容器内部的端口(8080)
外界通过主机的8888端口就可以访问到tomcat,前提是8888端口开放
# 查看防火墙状态
service firewalld status
# 关闭防火墙
service firewalld stop
docker logs 容器id/名字
docker ps
获取容器id,使用下面的命令进入容器目录docker exec -it 432bd371973f /bin/bash
# 拉取镜像
docker pull mysql:5.7.28
# 运行mysql容器
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.28
–name mysql:容器的名字是mysql;
MYSQL_ROOT_PASSWORD=root:root用户的密码是root (必须指定)
连接容器内mysql
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
docker exec -it mysql bash
-i: 交互式操作。
-t: 终端。
mysql: 名为mysql的 镜像。
bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash,也可以用/bin/bash
连接上以后就可以正常使用mysql命令操作了
mysql -uroot -proot
直接使用端口映射更加方便
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.28