转载来自CSDN:https://blog.csdn.net/CSNN2019/article/details/119057956

设置仓库

更新 apt 包索引

sudo apt-get update

在这里插入图片描述

安装 apt 依赖包,用于通过HTTPS来获取仓库:

sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

添加 Docker 的官方 GPG 密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

在这里插入图片描述

设置稳定版仓库

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

在这里插入图片描述

# 再次更新软件源
sudo apt-get -y update
# 安装 Docker CE 版
sudo apt-get -y install docker-ce

安装 Docker Engine-Community

更新 apt 包索引

sudo apt-get update

在这里插入图片描述

安装最新版本的 Docker Engine-Community 和 containerd

sudo apt-get install docker-ce docker-ce-cli containerd.io

在这里插入图片描述

列出可用版本(注:这里安装特定版本,所以安装前需要列出可用版本)

apt-cache madison docker-ce

在这里插入图片描述

安装

这里选择 5:19.03.15~3-0~ubuntu-focal 列表中第一个版本,这只是个人建议,这个版本不是最新也不是最旧,其实使用起来差距不大,

sudo apt-get install docker-ce=5:19.03.15~3-0~ubuntu-focal docker-ce-cli=5:19.03.15~3-0~ubuntu-focal containerd.io

测试是否成功

sudo docker run hello-world

在这里插入图片描述

检测安装情况

sudo docker version

搭建个人博客

失败案例

docker pull mysql 拉取mysql镜像

在这里插入图片描述

docker pull wordpress 拉取wordpress镜像

在这里插入图片描述

docker run --name sql -p 3306:3306 -d mysql
//参数的含义:
//其中run表示创建一个新的容器并运行一个命令,
//--name 后面跟的就是这个容器的名称,可以随意取一个,但最好和镜像类似能分别出来
//-p 就是将docker中的端口和宿主机的端口相互映射(前面是宿主机的端口,后面是docker内的端口)
//-d表示创建的是一个在后台运行的容器, 后台运行容器,并返回容器ID
//最后的mysql就是镜像名(当然也可以使用镜像id,他是唯一的,使用docker images就可以查看到镜像的id)

在这里插入图片描述
这里呢,端口被那个小皮面板给占了,我把小皮面板里的mysql关闭后,就创建正常,但是无法启动,启动一秒就关闭,查了一下日志,报如下错误:

docker logs cea56de6f8d1

在这里插入图片描述

创建容器mysql

最后用了下面这种才解决那个日志报错:

docker run --name mysql -d -it -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql

紧接着其它操作

//表示在容器sql 中开启一个交互模式的终端
docker exec -it sql /bin/bash 进入到sql容器的内部

//下面就是Mysql的一些操作了

//进入到mysql数据库的内部,初始账号和密码都是root
mysql -uroot -proot

//查看用户信息,host为 % 表示不限制ip    localhost表示本机使用    plugin非mysql_native_password 则需要修改密码
select host,user,plugin,authentication_string from mysql.user; 

//更新user为root,host为% 的密码为123456
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

//更新user为root,host为localhost 的密码为123456
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

//最终就可以使用navicat远程连接数据库了:root 123456 3306 (端口记得要在安全组中开放)

//退出容器内只需要输入exit即可

创建容器wordpress

docker run --name wordpress \
-e WORDPRESS_DB_HOST=x.x.x.x:3306 \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=123456\
-e WORDPRESS_DB_NAME=wordpress \
-p 8081:80 \
-v /root/wordpress/config:/var/www/html \
-d wordpress\
//大部分参数在上面配置mysql已经介绍了,这里还用到了一些之前没用到的我们介绍一下
// -v 将wordpress容器内的配置文件挂载到宿主机上,这样就不需要每次通过exec进入到容器内部修改配置文件了
// -e  WORDPRESS_DB_NAME=wordpress: 设置wordPress的数据库名称为wordpress;

在这里插入图片描述
最后得出这种结论,不知道哪里搞错了,然后从头再来

成功案例

创建数据库文件

root@ubuntu1804:~ mkdir wordpress
root@ubuntu1804:~ cd wordpress/
root@ubuntu1804:~/wordpress vi env_mysql.list 
MYSQL_ROOT_PASSWORD=123456
MYSQL_DATABASE=wordpress
MYSQL_USER=wpuser
MYSQL_PASSWORD=wppass

wordpress配置文件

root@ubuntu1804:~/wordpress vi env_wordpress.list

WORDPRESS_DB_HOST=mysql:3306
WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_USER=wpuser
WORDPRESS_DB_PASSWORD=wppass
WORDPRESS_TABLE_PREFIX=wp_

创建容器mysql

docker run --name mysql -v /data/mysql:/var/lib/mysql --env-file=/root/wordpress/env_mysql.list -d -p 3306:3306 mysql

在容器sql 中开启一个交互模式的终端,因为我服务器上sql太多了,还有一个小皮面板里面有sql

docker exec -it mysql /bin/bash
mysql -uroot -p123456 -h127.0.0.1

查看是否有wordpress数据库

show databases;

在这里插入图片描述

创建容器wordpress

docker run -d --name wordpress --link mysql --env-file=/root/wordpress/env_wordpress.list -p 8081:80 wordpress

在这里插入图片描述

成功

在这里插入图片描述
在这里插入图片描述