前言
Docker:
Docker简单来说就是简化环境配置的,我们配置环境只需要简单的docker pull,docker run即可,而删除环境也很容易,减少了运维和开发人员工作量。
Docker-compose:
Docker-Compose 项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。
Docker-Compose 项目由 Python 编写,调用 Docker 服务提供的API来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用Compose 来进行编排管理。
前置操作:
Docker一定是在Linux环境下运行的,因此必须会linux。
我们操作环境是ubuntu22.04。
首先要安装ubuntu,我们需要先安装一下ssh环境,方便后期使用ssh工具连接。
一、安装ssh连接工具
- 安装 OpenSSH 服务器
首先,安装 openssh-server
包,它包含了SSH服务端:
sudo apt update
sudo apt install openssh-server
- 启动 SSH 服务
安装完成后,启动SSH服务:
sudo systemctl start ssh
- 配置 SSH 服务自启动
为了确保每次系统启动时都自动启动SSH服务,可以设置SSH服务开机自启:
sudo systemctl enable ssh
- 检查 SSH 服务状态
确认SSH服务是否正在运行:
sudo systemctl status ssh
如果SSH服务运行正常,你会看到类似 active (running)
的状态。
- 配置防火墙
如果你的系统启用了防火墙(如ufw
),你可能需要允许SSH流量。运行以下命令允许SSH通过防火墙:
sudo ufw allow ssh
然后,启用防火墙(如果还没有启用):
sudo ufw enable
- 检查 SSH 端口
默认情况下,SSH使用端口22。如果你的SSH服务没有使用默认端口或者被防火墙阻止,你需要确认是否正确配置了SSH端口。
可以查看SSH配置文件 /etc/ssh/sshd_config
中的端口设置:
sudo nano /etc/ssh/sshd_config
检查 Port
配置项,确保其设置为 22
或你希望使用的其他端口。修改后,重新加载SSH服务:
sudo systemctl reload ssh
- 连接到SSH
安装和配置完成后,你可以使用SSH客户端连接到你的Ubuntu服务器。假设服务器的IP地址是 192.168.138.xxx
,使用以下命令:
ssh username@192.168.138.xxx
二、安装docker
- 更新现有的包
首先,确保你的包列表是最新的,并且安装了必要的依赖项:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
- 添加Docker的官方GPG密钥
下载并添加Docker的官方GPG密钥:
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 添加Docker官方的APT源
添加Docker的APT源到你的系统:
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
- 更新APT包索引
记得关闭防火墙 :
sudo systemctl stop firewall
再次更新包索引以从Docker官方源中获取包:
sudo apt update
- 安装Docker引擎
安装Docker引擎(Docker CE):
sudo apt install docker-ce
- 启动并启用Docker
安装完成后,启动Docker并设置它在系统启动时自动启动:
sudo systemctl start docker
sudo systemctl enable docker
- 验证Docker安装
运行以下命令来验证Docker是否安装成功:
sudo docker --version
运行结果:
显示这样的结果代表docker安装成功
8、安装docker-compose
下载docker-compose二进制文件:
curl -SL https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
赋予权限:
sudo chmod +x /usr/local/bin/docker-compose
验证:
docker-compose --version
运行结果:
三、Docker常见命令
①、拉取镜像
docker pull 镜像名:版本号
eg:
docker pull mysql:8.0.23
②、查看当前所有镜像
docker images
③、运行容器
这里以一个命令为例,讲解所有参数的含义。
docker run -d --name mysql -p 3306:3306 -v /home/sxc/mysql8/data:/var/lib/mysql -v /home/sxc/mysql8/my.cnf:/etc/mysql/conf.d/my.cnf -e MYSQL_ROOT_PASSWORD=123456 --restart=always mysql:8.0.23
首先最简单的是:docker run mysql:8.0.23
-d:表示容器会在后台运行,不占用当前终端。
– --name=mysql表示运行后容器的名字,如果不指定,会默认为镜像名,即mysql:8.0.23
-p 3306:3306,这里是指端口映射,注意先后顺序,前面端口是宿主机的端口,后面是docker镜像的端口。
-v /home/sxc/mysql8/my.cnf:/etc/mysql/conf.d/my.cnf 表示将目录挂载,前面是宿主机的目录,后面是docker容器内的目录,即宿主机的/home/sxc/mysql8/my.cnf和mysql镜像的/etc/mysql/conf.d/my.cnf目录的变化会一直,方便我们修改容器的配置文件,这样修改的时候直接在宿主机修改即可,-v可以有多个。
-e MYSQL_ROOT_PASSWORD=123456,其中-e参数表示设置环境变量,MYSQL_ROOT_PASSWORD=123456表示设置mysql的root用户密码为123456
– --restart=always 表示该容器永远开机自启动。
④、查看当前运行容器
docker ps
可以看到最左边这个是容器ID,是唯一的后面会用到。
⑤、停止容器运行
docker stop 容器名
⑥、启动/重启容器
docker start 容器名
docker restart 容器名
⑦、进入容器内部
docker exec -it 容器名 终端名
可以看到,我们进入了mysql容器内部。
退出容器内部的命令是:
exit
⑧、删除容器
docker rm -f 容器名
-f 表示强制删除
可以看到之前run的容器被删除了,因此restart的时候显示error。
⑨、删除镜像
docker rmi 镜像名
-f 表示强制删除
可以看到,此时镜像被删除了。
四、docker-compose使用
①、安装docker-compose
下载docker-compose二进制文件:
curl -SL https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
赋予权限:
sudo chmod +x /usr/local/bin/docker-compose
验证:
docker-compose --version
运行结果:
显示这样就表示安装成功了。
一般docker-compose安装在 /usr/local/bin目录下面。
②、docker-compose.yml配置
而我们如果像原来docker一样一个一个拉取镜像的话,效率太慢,因此我们可以将要拉取的环境配置到docker-compose.yml文件中,这样只需要按照文件运行,docker就会一个一个的帮我们拉取镜像并运行容器了。
我们以下面这个文件举例:
我这里在/home/sxc/docker-compose目录下面创建了一个docker-compose.yml文件,文件内容如下:
version: '2.1'
services:
nginx:
image: nginx:latest
container_name: nginx_host1
ports:
- 8081:80
volumes:
- /opt/nginx:/opt/nginx/html
networks:
- host1-network
redis:
image: redis:latest
container_name: redis_host1
ports:
- 63790:6379
networks:
- host1-network
networks:
host1-network:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.11.0/24
gateway: 192.168.11.254
注意执行docker-compose up -d命令的时候,一定要在与docker-compose.yml文件同一个目录下执行才可以。
运行结果:
可以看到直接帮我们拉取镜像并运行容器了。