一、开启远程登录
sudo vim /etc/ssh/sshd_config
修改下面的值
PermitRootLogin yes
PubkeyAuthentication yes
sudo systemctl reload sshd
sudo passwd root
二、安装docker
卸载旧版本
旧版本的 Docker 称为 docker
或者 docker-engine
,使用以下命令卸载旧版本:
sudo apt-get remove docker docker-engine docker.io
使用 APT 安装
由于 apt
源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。
为了确认所下载软件包的合法性,需要添加软件源的 GPG
密钥。
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 官方源
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
然后,我们需要向 sources.list
中添加 Docker 软件源
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 官方源
# $ echo \
# "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
# $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装 Docker
更新 apt 软件包缓存,并安装 docker-ce
:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 验证安装版本
docker --version
# 显示出
Docker version 27.1.1, build 6312585
三、安装docker-compose
mkdir /root/folder
cd /root/folder
wget https://github.com/docker/compose/releases/download/v2.29.1/docker-compose-linux-x86_64
# 下载很慢可以浏览器下载后上车到服务器
scp docker-compose-linux-x86_64 root@x.x.x.x:/root/folder
sudo mv /root/folder/docker-compose-linux-x86_64 /usr/local/bin/docker-compose
# 赋予可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
# 验证 Docker Compose 是否正确安装:
docker-compose --version
# 显示出
# Docker Compose version v2.29.1
四、安装mysql和mongodb
mkdir -p /root/folder/docker-data
cd /root/folder/docker-data
mkdir data
mkdir -p data/mysql_data
mkdir -p data/mongodb_data
vim docker-compose.yml
networks:
docker-net-01:
driver: bridge
services:
mysql:
container_name: mysql_5.7_01
image: "mysql:5.7"
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydatabase
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
volumes:
- ./data/mysql_data:/var/lib/mysql
networks:
- docker-net-01
mongodb:
container_name: mongodb_4.0_01
image: "mongo:4.0"
restart: always
ports:
- 27017:27017
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: rootpassword
volumes:
- ./data/mongodb_data:/data/db
networks:
- docker-net-01
如果想要安装其他的中间件可以修配配置文件,例如安装Redis
networks:
docker-net-01:
driver: bridge
services:
redis:
container_name: redis_01
image: "redis:latest"
restart: always
ports:
- 6379:6379
volumes:
- ./data/redis_data:/data
environment:
- REDIS_PASSWORD=tiktok
- ALLOW_EMPTY_PASSWORD=no
networks:
- docker-net-01
mysql:
container_name: mysql_5.7_01
image: "mysql:5.7"
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydatabase
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
volumes:
- ./data/mysql_data:/var/lib/mysql
networks:
- docker-net-01
mongodb:
container_name: mongodb_4.0_01
image: "mongo:4.0"
restart: always
ports:
- 27017:27017
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: rootpassword
volumes:
- ./data/mongodb_data:/data/db
networks:
- docker-net-01
root@iZ2vc:~/folder/docker-data# tree
.
├── data
│ ├── mongodb_data
│ └── mysql_data
└── docker-compose.yml
3 directories, 1 file
root@iZ2vc:~/folder/docker-data#
docker-compose up -d
# 下载太慢,还源地址
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker-compose up -d
root@iZ2vc:~/folder/docker-data# docker-compose up -d
[+] Running 25/25
✔ mysql Pulled 31.6s
✔ 20e4dcae4c69 Pull complete
... 29.5s
✔ df9a4d85569b Pull complete 29.6s
✔ mongodb Pulled 68.7s
✔ 58690f9b18fc Pull complete
... 66.4s
✔ 22b97876323d Pull complete 66.4s
[+] Running 3/3
✔ Network docker-data_docker-net-01 Created 0.1s
✔ Container mongodb_4.0_01 Started 2.2s
✔ Container mysql_5.7_01 Started 2.2s
root@iZ2vc:~/folder/docker-data#
docker ps --format "table {{.ID}}\t{{.Ports}}\t{{.Names}}"
root@iZ2vc:~/folder/docker-data# docker ps --format "table {{.ID}}\t{{.Ports}}\t{{.Names}}"
CONTAINER ID PORTS NAMES
62c3e40fb1d1 0.0.0.0:27017->27017/tcp, :::27017->27017/tcp mongodb_4.0_01
9a89fbae8cc2 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql_5.7_01
root@iZ2vc:~/folder/docker-data#
链接进入容器,比如进入 “mysql_5.7_01”
docker exec -it mysql_5.7_01 bash
进入容器后,你就可以在容器内执行命令或操作 MySQL 了。如果你需要直接连接到 MySQL 数据库,你可以使用 MySQL 客户端工具(如 mysql
命令行工具),密码在 docker-compose.yml 的配置文件里面有,看自己的设置:
mysql -u root -p