一、Docker简介

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

使用Docker的步骤:
1、安装Docker仓库
2、去Docker仓库找到这个软件对应的镜像
3、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器
4、对容器的启动停止就是对软件的启动停止

查看服务器内核版本

uname -r

二、安装Docker

安装命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh

直到出现Complete!

三、Docker的启动和停止

启动Docker命令systemctl start docker
查看版本号:docker -v

root@iZwz92jchyefq3joc3wv9eZ:~# docker -v
Docker version 20.10.7, build f0df350

下次开机自启动systemctl enable docker

root@iZwz92jchyefq3joc3wv9eZ:~# systemctl enable docker
Synchronizing state of docker.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable docker

停止dockersystemctl stop docker

root@iZwz92jchyefq3joc3wv9eZ:~# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket

四、Docker的常用操作

检索mysql镜像docker search mysql

root@iZwz92jchyefq3joc3wv9eZ:~# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11104     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4209      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   824                  [OK]
percona                           Percona Server is a fork of the MySQL relati…   546       [OK]       
phpmyadmin                        phpMyAdmin - A web interface for MySQL and M…   267       [OK]       

默认去DockerHub去检索
⚠️OFFICIAL是否是官方、AUTOMATED是否是自动构建。

拉去mysql镜像 docker pull mysql

Using default tag: latest
latest: Pulling from library/mysql
Digest: sha256:52b8406e4c32b8cf0557f1b74517e14c5393aff5cf0384eff62d9e81f4985d4b
Status: Image is up to date for mysql:latest

不加版本号默认下的是latest版本

查看本地docker镜像docker images

root@iZwz92jchyefq3joc3wv9eZ:~# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
tomcat        latest    36ef696ea43d   7 days ago     667MB
mysql         latest    5c62e459e087   2 weeks ago    556MB
hello-world   latest    d1165f221234   4 months ago   13.3kB

删除镜像docker rmi 4cdc5dd7eaad
4cdc5dd7eaad为镜像id

root@iZwz92jchyefq3joc3wv9eZ:~# docker rmi 4cdc5dd7eaad
Untagged: nginx:latest
Untagged: nginx@sha256:8df46d7414eda82c2a8c9c50926545293811ae59f977825845dda7d558b4125b
Deleted: sha256:4cdc5dd7eaadff5080649e8d0014f2f8d36d4ddf2eff2fdf577dd13da85c5d2f
Deleted: sha256:63d268dd303e176ba45c810247966ff8d1cb9a5bce4a404584087ec01c63de15
Deleted: sha256:b27eb5bbca70862681631b492735bac31d3c1c558c774aca9c0e36f1b50ba915
Deleted: sha256:435c6dad68b58885ad437e5f35f53e071213134eb9e4932b445eac7b39170700
Deleted: sha256:bdf28aff423adfe7c6cb938eced2f19a32efa9fa3922a3c5ddce584b139dc864
Deleted: sha256:2c78bcd3187437a7a5d9d8dbf555b3574ba7d143c1852860f9df0a46d5df056a

根据镜像启动容器docker run --name mytomcat01 -d tomcat
mysql启动的命令(官网,但是实际启动有误): docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
可以使用docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=root -p5555:3306 -d mysql启动!!
注意:-d代表后台运行 ;-p代表将主机的端口映射容器内部端口

Z:~# docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=root -p5555:3306 -d mysql
1225f34ed9bd27cdbbfb75cc49d1c5d03b97acc74c84e9bef55bdaa350e44f77
root@iZwz92jchyefq3joc3wv9eZ:~# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
1225f34ed9bd   mysql     "docker-entrypoint.s…"   9 seconds ago   Up 9 seconds   33060/tcp, 0.0.0.0:5555->3306/tcp, :::5555->3306/tcp   some-mysql
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
root@iZwz92jchyefq3joc3wv9eZ:~# docker run --name mytomcat01 -d tomcat
95b405c256de58f2e4acffb8652f12df73813f4c9b68a9992dad220d54961d3e

查看运行中的镜像docker ps

root@iZwz92jchyefq3joc3wv9eZ:~# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED          STATUS          PORTS      NAMES
95b405c256de   tomcat    "catalina.sh run"   48 seconds ago   Up 47 seconds   8080/tcp   mytomcat01

停止运行中的容器docker stop 95b405c256de

root@iZwz92jchyefq3joc3wv9eZ:~# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED          STATUS          PORTS      NAMES
95b405c256de   tomcat    "catalina.sh run"   48 seconds ago   Up 47 seconds   8080/tcp   mytomcat01
root@iZwz92jchyefq3joc3wv9eZ:~# docker stop 95b405c256de
95b405c256de
root@iZwz92jchyefq3joc3wv9eZ:~# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

查看所有的容器(运行中和停止的)docker ps -a

root@iZwz92jchyefq3joc3wv9eZ:~# docker ps -a
CONTAINER ID   IMAGE         COMMAND                  CREATED         STATUS                        PORTS     NAMES
95b405c256de   tomcat        "catalina.sh run"        3 minutes ago   Exited (143) 54 seconds ago             mytomcat01

启动容器docker start 95b405c256de

root@iZwz92jchyefq3joc3wv9eZ:~# docker start 95b405c256de
95b405c256de
root@iZwz92jchyefq3joc3wv9eZ:~# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS      NAMES
95b405c256de   tomcat    "catalina.sh run"   5 minutes ago   Up 9 seconds   8080/tcp   mytomcat01

删除容器(必须是停止状态):docker rm 95b405c256de
⚠️:rm是删除容器的rmi是删除镜像的

四、Navicat Premium 连接Mysql报错

在这里插入图片描述
docker exec -it some-mysql bashsome-mysql为docker中的mysql名

root@iZwz92jchyefq3joc3wv9eZ:~# docker exec -it some-mysql bash
root@1225f34ed9bd:/# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.25 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

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> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
修改密码
ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'root';
然后就连接成功了在这里插入图片描述

五、高级操作(下文全部来源官网):

使用自定义 MySQL 配置文件
MySQL 的默认配置可以在 中找到/etc/mysql/my.cnf,其中可能!includedir还有其他目录,例如/etc/mysql/conf.d或/etc/mysql/mysql.conf.d。请检查mysql图像本身中的相关文件和目录以获取更多详细信息。

如果/my/custom/config-file.cnf是你的自定义配置文件的路径和名称,你可以这样启动你的mysql容器(注意这个命令中只使用了自定义配置文件的目录路径):
docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
这将启动一个新容器some-mysql,其中 MySQL 实例使用来自/etc/mysql/my.cnf和的组合启动设置/etc/mysql/conf.d/config-file.cnf,后者的设置优先。

没有cnf文件的配置
许多配置选项可以作为标志传递给mysqld. 这将使您无需cnf文件即可灵活地自定义容器。例如,如果要将所有表的默认编码和排序规则更改为使用 UTF-8 ( utf8mb4),只需运行以下命令:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐