1.卸载
卸载旧版本Docker和残留数据
1 2 3 4 5 6 7 8 9 10
| yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine rm -rf /var/lib/docker rm -rf /var/lib/containerd
|
2.安装
- 安装依赖包
1
| yum install -y yum-utils device-mapper-persistent-data lvm2
|
- 配置Docker的yum源
1
| yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
|
- 安装Docker,CentOS 7对新版Docker兼容性有限,推荐安装24.0.x长期稳定版本,这里安装24.0.9
1
| yum install -y docker-ce-24.0.9 docker-ce-cli-24.0.9 containerd.io docker-compose-plugin
|
如果想安装最新的则去掉版本号如下
1
| yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
- 启动Docker服务
查看启动状态,出现 active (running) 即为成功
设置开机自启
3.配置镜像加速
创建配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.1panel.live", "https://docker.1ms.run", "https://docker.xuanyuan.me" ] } EOF
systemctl daemon-reload
systemctl restart docker
|
4.设置非root用户可以免sudo使用Docker(可选)
- 创建docker组
- 将用户加入docker组(替换user)
- 刷新组权限
- 校验
5.部署MySQL和命令解读
- 部署
1 2 3 4 5 6
| docker run -d \ --name mysql \ -p 3306:3306 \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=1234 \ mysql
|
- Docker命令解读
1 2 3 4 5 6 7 8
| docker run -d --name mysql -p 3306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123 mysql
docker run -d \ --name mysql \ -p 3306:3306 \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=1234 \ mysql
|
docker run :建并运行一个容器
-d :让容器在后台运行
--name :容器的名字,唯一值不可重复
-p 3306:3306 :端口映射,前面的端口号为宿主机的端口,后面的端口号为容器内端口(取决于进程不需要改动,根据安装的容器类型一般是固定的,比如mysql为3306,tomcat为8080)
-e KEY:VALUE :Environment Variables,环境变量,创建容器时需要用的环境变量,格式为镜像开发者规定的键值对
mysql:创建容器时指定运行的镜像的名字,命名规范为 [repository]:[tag] ,其中repository为镜像名,tag为镜像版本,如mysql:5.7
6.设置容器自启动的方式
重启策略说明:
- no:默认值,容器退出时不会自动重启。
- on-failure:仅在容器异常退出(退出状态码非 0)时重启。
- always:无论退出原因,始终重启容器。(容易占用资源过多不必要的资源,根据情况选择)
- unless-stopped:除非手动停止,否则始终重启。
- 方式1:新建容器时设置自启动
1
| docker run -d --name <容器名称> --restart=unless-stopped <镜像名称>
|
示例:
1 2 3 4 5 6 7
| docker run -d \ --name mysql \ --restart=unless-stopped \ -p 3306:3306 \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=1234 \ mysql
|
- 方式2:已存在的容器设置自启动
1
| docker update --restart=unless-stopped <容器ID或名称>
|
示例:(注意设置的是容器ID或名称,不是镜像名称)
1
| docker update --restart=unless-stopped mysql
|
- 取消容器的自启动
1
| docker update --restart=no <容器ID或名称>
|
- 批量设置所有容器自启动
1
| docker update --restart=unless-stopped $(docker ps -aq)
|
注意事项
7.Docker常用命令
| 命令 |
功能 |
示例 |
docker run |
启动一个新的容器并运行命令 |
docker run -d ubuntu |
docker ps |
列出当前正在运行的容器 |
docker ps |
docker ps -a |
列出所有容器(包括已停止的容器) |
docker ps -a |
docker build |
使用 Dockerfile 构建镜像 |
docker build -t my-image . |
docker images |
列出本地存储的所有镜像 |
docker images |
docker pull |
从 Docker 仓库拉取镜像 |
docker pull ubuntu |
docker push |
将镜像推送到 Docker 仓库 |
docker push my-image |
docker exec |
在运行的容器中执行命令 |
docker exec -it container_name bash |
docker stop |
停止一个或多个容器 |
docker stop container_name |
docker start |
启动已停止的容器 |
docker start container_name |
docker restart |
重启一个容器 |
docker restart container_name |
docker rm |
删除一个或多个容器 |
docker rm container_name |
docker rmi |
删除一个或多个镜像 |
docker rmi my-image |
docker logs |
查看容器的日志 |
docker logs container_name |
docker inspect |
获取容器或镜像的详细信息 |
docker inspect container_name |
docker exec -it |
进入容器的交互式终端 |
docker exec -it container_name /bin/bash |
docker network ls |
列出所有 Docker 网络 |
docker network ls |
docker volume ls |
列出所有 Docker 卷 |
docker volume ls |
docker-compose up |
启动多容器应用(从docker-compose.yml文件) |
docker-compose up |
docker-compose down |
停止并删除由docker-compose启动的容器、网络等 |
docker-compose down |
docker info |
显示 Docker 系统的详细信息 |
docker info |
docker version |
显示 Docker 客户端和守护进程的版本信息 |
docker version |
docker stats |
显示容器的实时资源使用情况 |
docker stats |
docker login |
登录 Docker 仓库 |
docker login |
docker logout |
登出 Docker 仓库 |
docker logout |
8.配置Docker命令别名
写入当前用户的~/.bashrc
1 2 3 4 5 6
| vim ~/.bashrc alias dps='docker ps' alias dpsa='docker ps -a' alias dim='docker images' alias dlogs='docker logs -f' alias dex='docker exec -it'
|
刷新配置