Docker安装以及基础使用
docker 容器,docker 命令,docker 搭建mysql 服务
Docker安装使用
安装依赖包
sudo apt install apt-transport-https ca-certificates curl software-properties-common
添加 Docker GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
加 Docker GPG 密钥的主要目的是用于验证从 Docker 官方站点下载的软件包的真实性和完整性。GPG(GNU Privacy Guard)是一个用于加密和签名数据的工具,通过使用密钥对,它确保软件包未被篡改,并且是由官方发布的。
安装 Docker 引擎
sudo apt install docker-ce docker-ce-cli containerd.io
设置稳定版 Docker 存储库
出现这个这个提示,可能是docker -ce 和 decker.io 没有安装成功
Package 'docker-ce' has no installation candidate
可以执行 安装docker.io
sudo apt install docker.io
启动 Docker 服务
sudo systemctl start docker
设置 Docker 开机自启
sudo systemctl enable docker
验证 Docker 安装
docker --version
运行镜像
sudo docker run hello-world
执行这个命令,docker 就会去运行 hello-world 这个镜像,如果本地没有这个镜像,那么就回去镜像仓库拉起
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
出现 **Hello from Docker!**表示这个镜像运行成功了
Hello from Docker!
This message shows that your installation appears to be working correctly.
镜像和容器的关系
Docker 镜像
- 镜像是一个轻量级、独立、可执行的软件包,其中包含运行应用程序所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
- 镜像是静态的,一旦构建完成,其内容不会改变。
Docker 容器
- 容器是从 Docker 镜像创建的运行实例。容器包含了运行应用程序的所有组件,包括代码、运行时、系统工具、系统库和设置。
- 容器是动态的,可以启动、停止、删除和移动。
镜像是类,容器就是类的实例对象
Docker 命令
-
容器创建
docker run -d -p 8080:80 --name myweb nginx
-d
: 后台运行容器。-p
: 将容器的端口映射到主机。--name
: 为容器指定一个名称。-v
: 将主机目录挂载到容器内。
-
容器启动
docker start hello-world
-
容器停止
docker stop hello-world
-
查看运行中的容器
docker ps
-
查看所有容器(包括已停止的)
docker ps -a
-
进入运行中的容器( hello-world )终端
docker exec -it hello-world bash
-
删除 Docker 容器
docker rmi -f myimage:tag
-f 表示强制删除
-
查看本地 Docker 中的镜像列表
docker images
-
删除 Docker 镜像
docker rmi imageName
-
进入正在运行的容器
docker exec -it container_id /bin/bash
实践,搭建docker mysql 服务
拉取MySQL镜像
sudo docker pull mysql:latest
创建并运行 MySQL 容器:
sudo docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:latest
这个命令创建了一个名为 mysql 的容器,指定了 MySQL 的根密码(123456),并将容器的 3306 端口映射到主机的 3306 端口
进入 MySQL 容器
sudo docker exec -it mysql-container bash
连接到 MySQL 服务
mysql -u root -p
本地mysql服务 和 容器mysql服务 版本
mysql --version (本地)
mysql Ver 8.0.35-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))sudo docker exec -it mysql bash(容器)
bash-4.4# mysql --version
mysql Ver 8.2.0 for Linux on x86_64 (MySQL Community Server - GPL)
bash-4.4#
查看mysql 服务状态
sudo systemctl status mysql
终止mysql 服务状态
sudo systemctl stop mysql
查看mysql 进程信息
ps aux | grep mysql
杀死mysql服务进程
sudo kill -g msyql-pid
请确保使用
kill -9
,这是强制终止信号,可以强制结束进程
启动mysql容器
sudo docker start mysql-container
进入mysql 容器
sudo docker exec -it mysql /bin/bash
查看mysql 版本
mysql --version;
mysql Ver 8.2.0 for Linux on x86_64 (MySQL Community Server - GPL)
发现mysql版本太高,Navicat 无法连接到mysql 服务
删除mysql 容器
docker rm mysql
删除镜像
docker rmi mysql
搞不定,重新把阿里云服务系统更新,从头开始
安装dokcer 之前要更新apt 的源,不然有问题
sudo apt-get update
查看MySQL 镜像的其他版本
docker search mysql
但是也看不出来哪个的MySQL 是什么版本的,随意找一个 percona
安装拉起镜像 percona
sudo docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 percona
- 使用percona 镜像创建容器
- root 密码 设置未 123456
- 容器名称 mysql
- 映射主机的3306端口和容器3360端口
修改身份验证插件,不然naviCat 连接不上
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
FLUSH PRIVILEGES;
这个语句的目的是将 ‘root’ 用户的身份验证插件更改为 mysql_native_password
并设置新密码为 ‘123456’。
ALTER USER 'root'@'localhost'
: 指定要更改的用户,这里是 ‘root’ 用户,且限制只能从 ‘localhost’ 连接。
IDENTIFIED WITH mysql_native_password
: 指定使用 mysql_native_password
插件进行身份验证。MySQL 8.0 版本后,默认使用 caching_sha2_password
插件,但有时需要与旧版本的客户端兼容,因此可能需要切换回 mysql_native_password
。
BY '123456'
: 设置用户的新密码为 ‘123456’。
阿里云服务设置安全组,开放3306 端口
使用NaviCat 连接容器的msyql 服务
更多推荐
所有评论(0)