Docker是一个开源的应用容器引擎,让开发者可以定制化自己的镜像并生成实例,然后发布到Linux机器上,实现虚拟化,完全使用沙箱机制,相互之间不会有任何接口。
0.官网
https://www.docker.com/
https://docs.docker.com/
https://docs.docker.com/install/linux/docker-ce/centos/
1.快速部署
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl status docker
2.相关概念
docker官方的镜像仓库地址:https://www.docker.com/products/docker-hub
docker id:用户名称
image:镜像
container:镜像文件创建的实例
3.上手案例
案例一:hello-world
docker help //查看帮助
docker pull hello-world //到官网仓库拉取镜像
docker images //查看本地的镜像
docker run hello-world //运行镜像
docker ps -a //查看所有的镜像实例,包括正在运行的和停止的
案例二:MySQL
docker pull mysql:5.7
docker run --name mysql01 \ //设置名字
-e MYSQL_ROOT_PASSWORD=123456 \ //设置MySQL登录密码
-p 3306:3306 \ //做端口映射,实例的3306口映射到linux的3306口
-d mysql:5.7 //-d表示后台运行
docker ps //查看正在运行的镜像实例,返回如下:
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# c5f71cccae33 mysql:5.7 "docker-entrypoint.s…" 6 seconds ago Up 6 seconds 3306/tcp, 33060/tcp mysql01
docker exec -it c5f71cccae33 /bin/bash //进入实例,
root@c5f71cccae33:/# ls -l / //可看到实例内的目录结构完全是一个小的linux系统
root@c5f71cccae33:/# mysql -uroot -p123456 //登录MySQL
root@c5f71cccae33:/# exit //退出容器实例
docker stop c5f71cccae33 //停止实例
docker start c5f71cccae33 //启动实例
此时 dbeaver 也可以访问这个MySQL库。
注:docker 的一个镜像实例对应 Linux 的一个后台进程,可以通过 ps -ef 查看。
4.构建自己的镜像
在官网的镜像仓库,找官方或别人的Dockerfile,注意文件名不能做什么改动,必须是:Dockerfile。
然后,修改这个文件,做成自己的 Dockerfile(主要是shell编程),然后通过命令构建自己的镜像文件。
如制作MySQL镜像,下载官方的 Dockerfile 文件做修改,在改后 Dockerfile 文件的当前目录下执行如下命令:
docker build . -t mysql:v5.7