Docker 笔记记录
- 一、简介
- 二、核心概念
- 三、安装Docker
-
- 3.1 Linux安装Docker
- 四、Docker常用命令&操作
-
- 4.1、镜像操作
- 4.2、容器操作
- 五、docker操作MySQL数据库
-
- 5.1 docker 启动MySQL且连接
- 5.2 docker中进入MySQL容器
- 六、docker配置数据卷
一、简介
Docker是一个开源的应用容器引擎;是一个轻量级容器技术;
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;
运行中的这个镜像称为容器,容器启动是非常快速的。
二、核心概念
- docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
- docker客户端(Client):连接docker主机进行操作; docker仓库(Registry):用来保存各种打包好的软件镜像;
- docker镜像(Images):软件打包好的镜像;放在docker仓库中;
- docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
使用Docker的步骤:
1)、安装Docker
2)、去Docker仓库找到这个软件对应的镜像;
3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
4)、对容器的启动停止就是对软件的启动停止;
三、安装Docker
3.1 Linux安装Docker
四、Docker常用命令&操作
4.1、镜像操作
4.2、容器操作
软件镜像(QQ安装程序)—-运行镜像—-产生一个容器(正在运行的软件,运行的QQ);
步骤:
1)、搜索镜像
[root@localhost ~]# docker search 镜像名
2)、拉取镜像
[root@localhost ~]# docker pull 镜像名
3)、根据镜像启动容器
docker run ‐‐name 容器名 ‐d 镜像名
4)、查看运行中的容器
docker ps
5)、 停止正在运行中的容器
docker stop 容器的id / 容器名
6)、查看所有的容器
docker ps ‐a
7)、启动容器
docker start 容器id / 容器名
8)、删除一个容器
docker rm 容器id
ps:删除容器时必须是 容器关闭状态,如果容器是开启的则先关闭
9)、删除一个镜像
docker rmi 镜像id
ps:删除镜像时必须先确认其镜像创造的容器先删除,否则删除不了
9)、举例 :启动一个做了端口映射的tomcat
[root@localhost ~]# docker run ‐d ‐p 8888:8080 tomcat
参数说明:
‐d : 后台运行
‐p : 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口
10)、为了演示简单关闭了linux的防火墙
service firewalld status # 查看防火墙状态
service firewalld stop # 关闭防火墙
11)、查看容器的日志
docker logs container‐name/container‐id
更多命令参看https://docs.docker.com/engine/reference/commandline/docker/
对于一个镜像,他能产生多个不同的容器,但是容器名不能相同(容器随机产生,id默认不同。) 相当于java中的class和对象
docker ps 命令查看当前后台正在运行的容器
docker ps -a 命令查看当前所有容器
五、docker操作MySQL数据库
5.1 docker 启动MySQL且连接
1、docker启动MySQL容器且端口转发
docker run -d -p 3306:3306 –name mysql -e MYSQL_ROOT_PASSWORD=root mysql
为了能让远程连接访问 其中 -e MYSQL_ROOT_PASSWORD=root是必须设置的
(注意 如果linux系统记得端口放行,如果是阿里云等服务器,还需要放行安全组)
接下来 我们可以用Navicat去访问试一试,此时我们可以看到连接成功。新建一个数据库,运行本地的sql,就能发现其中的数据已经有了
5.2 docker中进入MySQL容器
docker ps -a可以查看容器信息,根据容器名或容器id既可以进入mysql
docker exec -it mysql bash
[root@LinCheng ~]# docker exec -it mysql bash #docker 进入mysql容器root@dc86c60a02bf:/# ls #查看MySQL容器里的文件
bin dev entrypoint.sh home lib64 mnt proc run srv tmp var boot docker-entrypoint-initdb.d etc lib media opt root sbin sys usrroot@dc86c60a02bf:/# mysql -u root -p # 输入用户名 密码进入MySQL
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 37
Server version: 8.0.22 MySQL Community Server - GPLCopyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases; #此时 我们看到MySQL里的数据库
+--------------------+
| Database |
+--------------------+
| blog |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
六、docker配置数据卷
数据卷:将宿主机的一个目录映射到容器的一个目录中。
可以在宿主机中操作目录中的内容,那么容器内部映射的文件,也会跟着一起改变。
1)、创建数据卷
docker volume create 数据卷名称
创建数据卷后,默认会在宿主机的 /var/lib/docker/volumes/数据卷名称/_data 目录下
2)、查看数据卷详细信息
docker volume inspect 数据卷名称
3)、查看全部数据卷
docker volume ls
4)、删除数据卷
docker volume rm 数据卷名称
5)、应用数据卷
当你映射数据卷时,如果数据卷不存在。Docker 会帮你自动创建,会将容器内部自带的文件,存储在默认的存放路径中。
docker run -v 数据卷名称:容器内部的路径 镜像id
直接指定一个路径作为数据卷的存放位置。这个路径下是空的。
docker run -v路径:容器内部的路径 镜像id
docker run -d -p 8080:8080 -v /home/lin:usr/local/tomcat/webapps tomcat
运行一个tomcat容器,宿主机的/home/lin的位置映射到 usr/local/tomcat/webapps 目录
[root@LinCheng ~]# docker volume create tomcat #创建一个tomcat的数据卷
tomcat
[root@LinCheng ~]# cd /var/lib/docker/volumes/tomcat/_data
[root@LinCheng _data]# ls[root@LinCheng volumes]# docker volume inspect tomcat #查看tomcat镜像卷的信息
[{"Driver": "local","Labels": {},"Mountpoint": "/var/lib/docker/volumes/tomcat/_data","Name": "tomcat","Options": {},"Scope": "local"}
]
[root@LinCheng volumes]# [root@LinCheng volumes]# docker volume ls #查看所有镜像卷
DRIVER VOLUME NAME
local 163ce6e5f4951c33ca393c84c5b45d11eaee57d306ceab6c30dda46c1503514a
local e19bcb783956ea69b8d5cb4f1b15ca2c57cedbf95180472a07b2eabae1ff7f64
local tomcat[root@LinCheng volumes]# docker volume rm tomcat #删除镜像卷
tomcat