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 笔记记录-编程知识网

二、核心概念

  1. docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
  2. docker客户端(Client):连接docker主机进行操作; docker仓库(Registry):用来保存各种打包好的软件镜像;
  3. docker镜像(Images):软件打包好的镜像;放在docker仓库中;
  4. docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用

Docker 笔记记录-编程知识网
使用Docker的步骤:
1)、安装Docker
2)、去Docker仓库找到这个软件对应的镜像;
3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
4)、对容器的启动停止就是对软件的启动停止;

三、安装Docker

3.1 Linux安装Docker

Docker 笔记记录-编程知识网

四、Docker常用命令&操作

4.1、镜像操作

Docker 笔记记录-编程知识网

4.2、容器操作

软件镜像(QQ安装程序)—-运行镜像—-产生一个容器(正在运行的软件,运行的QQ);
步骤:
Docker 笔记记录-编程知识网
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 笔记记录-编程知识网

五、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系统记得端口放行,如果是阿里云等服务器,还需要放行安全组)
Docker 笔记记录-编程知识网
接下来 我们可以用Navicat去访问试一试,此时我们可以看到连接成功。新建一个数据库,运行本地的sql,就能发现其中的数据已经有了
Docker 笔记记录-编程知识网

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

Docker 笔记记录-编程知识网Docker 笔记记录-编程知识网