Docker安装

Centos

卸载旧版

1
2
3
4
5
6
7
8
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

安装yum-utils和设置存储库

1
2
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装docker

1
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

启动docker: sudo systemctl start docker

设置开机启动docker: sudo systemctl enable docker

其他系统待补

小试牛刀

运行mysql

使用docker启动一个mysql服务,快速搭建mysql环境

1
docker run -d --name mysql -p 3306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456 mysql

输出如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@C20240512126438 ~]# docker run -d --name mysql -p 3306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456 mysql
Unable to find image 'mysql:latest' locally
latest: Pulling from library/mysql
fcbdc4090331: Pull complete
95eb5073c36f: Pull complete
5e5ba0e6412a: Pull complete
ee4654eb29b7: Pull complete
1d2218160b86: Pull complete
bbe712936412: Pull complete
4a6efa152609: Pull complete
0f7c3b67bb2b: Pull complete
7ccd17e83c8a: Pull complete
04bf2c116556: Pull complete
Digest: sha256:4a4e5e2a19aab7a67870588952e8f401e17a330466ecfc55c9acf51196da5bd0
Status: Downloaded newer image for mysql:latest
a0b6b2aedec8d71473e0f0309b6eabac909d4779b04a79506a3e9fda1af527bb

上面是安装最新版的mysql,我测试的时候是8.x

如果要指定版本的mysql,可以这么写:

1
docker run -d --name mysql -p 3306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

其实还可以先拉取镜像,后启动容器;下面的也是可以的。

1
2
docker pull mysql:5.7
docker run -d --name mysql -p 3306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

pull命令可以省略,run的时候如果在本地找不到镜像,就会去docker hub拉取

参数解析

-d 后台运行

–name 容器名称 必须唯一

-p 端口映射 宿主主机端口:容器端口

-e 环境变量 变量名=值

mysql:5.7 镜像名 名称:标签(版本)

常用命令

镜像操作

查看本地所有镜像:docker images

1
2
3
4
[root@C20240512126438 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 1d668e06f1e5 8 days ago 188MB
mysql 5.7 5107333e08a8 5 months ago 501MB

REPOSITORY:镜像名称

TAG: 标签 版本

IMAGE ID: 镜像ID

CREATED:创建时间

SIZE: 镜像大小

删除指定镜像: docker rmi 1d668e06f1e5

使用镜像名称也是可以的,例如:docker rmi mysql; 如果忽略tag,默认删除latest,如果不存在latest则报错

保存(压缩)镜像:docker save -o mysql_57.tar mysql:5.7

加载(解压)镜像:docker load -i mysql_57.tar

容器操作

创建并运行容器:docker run 参数

查看所有容器:docker ps -a

查看正在运行容器:docker ps

1
2
3
4
[root@C20240512126438 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
841e2f17cc2b mysql "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 33060/tcp, 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp mysql
7207ac323407 nginx "/docker-entrypoint.…" 54 minutes ago Up 54 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp nginx

CONTAINER ID: 容器ID

IMAGE: 镜像名称

COMMAND:容器内服务器启动命令

CREATED:创建时间

STATUS: 状态 UP表示运行中

PORTS: 端口映射关系

NAMES: 容器名称

停止容器:docker stop 容器ID或容器名称

重启容器:docker restart 容器ID或容器名称

启动容器:docker start 容器ID或容器名称

删除容器:docker rm 容器ID或容器名称 加上-f参数可以强制删除运行中的容器

查看日志:docker logs 容器ID或容器名称 加上-f参数可实时查看日志更新

进入容器:docker exec -it 容器ID或容器名称 bash

执行命令:docker exec -it mysql mysql -uroot -p

制作镜像