【工具】Docker 入门及常用指令

SueWakeup

个人主页:SueWakeup

系列专栏:为祖国的科技进步添砖Java

个性签名:保留赤子之心也许是种幸运吧

目录

[1. 什么是 Docker ?](#1. 什么是 Docker ?)

[2. Docker 安装](#2. Docker 安装)

[3. Docker 镜像](#3. Docker 镜像)

[4. Docker 容器](#4. Docker 容器)

[4.1 运行容器](#4.1 运行容器)

[4.2 查看正在运行的容器](#4.2 查看正在运行的容器)

[4.3 停止容器运行](#4.3 停止容器运行)

[4.4 启动容器](#4.4 启动容器)

[4.5 删除容器(只能删除停止运行的容器)](#4.5 删除容器(只能删除停止运行的容器))

[5. 案例:Docker 安装 MySql](#5. 案例:Docker 安装 MySql)

[5.1 下载镜像](#5.1 下载镜像)

[5.2 创建环境目录](#5.2 创建环境目录)

[5.3 主 mysql 容器运行](#5.3 主 mysql 容器运行)

[5.4 配置 mysql 权限账户](#5.4 配置 mysql 权限账户)

[5.5 登录主服务器 mysql](#5.5 登录主服务器 mysql)

[5.6 修改密码和设置从服务器登录用户](#5.6 修改密码和设置从服务器登录用户)

[6. 案例:Docker 安装 Mongo](#6. 案例:Docker 安装 Mongo)

[6.1 下载镜像](#6.1 下载镜像)

[6.2 运行 mongo](#6.2 运行 mongo)

[6.3 进入 mongo 容器](#6.3 进入 mongo 容器)

注:手机端浏览本文章可能会出现 "目录"无法有效展示的情况,请谅解,点击侧栏目录进行跳转


1. 什么是 Docker ?

Docker 是基于 Go语言实现的开源项目,用于开发、运行和管理应用程序,利用容器化技术,能够将应用程序及其依赖项打包到一个可移植的容器中,从而实现跨平台部署

主要目标: "Build,Ship and Run Any App,Anywhere",通过对应的组件的封装、分发、部署、运行等生命周期管理,让用户 APP 及运行环境能够做到 "一次封装,到处运行"


2. Docker 安装

  1. 启动:systemctl start docker
  2. 查看状态:ststemctl status docker
  3. 测试:docker run hello-world
  4. 查看 docker 版本信息:docker version

3. Docker 镜像

  • 获取镜像网站:https://hub.daocloud.io/
  • 获取镜像:docker pull 镜像名称
  • 查看本地所有镜像:docker images
  • 删除本地镜像:docker rmi 镜像标识

4. Docker 容器

4.1 运行容器

Go 复制代码
docker run -d -p 宿主机端口:容器端口 --name 容器名称 镜像的标识

参数解释:

-d:代表后台执行

-p:将当前 Linux 的端口和容器的端口号进行映射

--name:容器的名字

4.2 查看正在运行的容器

Go 复制代码
docker ps -qa

参数解释:

-a:所有的容器(包括没有运行的容器)

-q:只查看标识

4.3 停止容器运行

Go 复制代码
docker stop 容器标识

4.4 启动容器

Go 复制代码
docker start 容器标识

4.5 删除容器(只能删除停止运行的容器)

Go 复制代码
docker rm 容器标识

docker rm -f 容器标识(强制删除容器,即使正在运行)

5. 案例:Docker 安装 MySql

5.1 下载镜像

Go 复制代码
docker pull daocloud.io/libary.mysql:8.0.16

5.2 创建环境目录

Go 复制代码
cd /usr/local/
mkdir mysql
cd mysql
mkdir master-data

5.3 主 mysql 容器运行

Go 复制代码
docker run --name mysql-master --privileged=true -v /usr/local/mysql/masterdata:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d 
daocloud.io/library/mysql:8.0.16 --character-set-server=utf8 --server-id=1 --
lower_case_table_names=1

参数:

--privileged:指定当前容器是否真正的具有 root 权限

-p:表示宿主机上的某个端口映射到 docker 容器内的某个端口

-d:参数制定了当前容器是在后台运行

--server-id:设置服务器的编号,主从复制的每一个服务的编号都不能相同

5.4 配置 mysql 权限账户

Go 复制代码
docker exec -it mysql-master /bin/bash

5.5 登录主服务器 mysql

Go 复制代码
mysql -uroot --p

5.6 修改密码和设置从服务器登录用户

Go 复制代码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
CREATE USER 'slave_one'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave_one'@'%';
CREATE USER 'slave_two'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave_two'@'%';
flush privileges;

6. 案例:Docker 安装 Mongo

6.1 下载镜像

Go 复制代码
docker pull mongo:5.0.3

6.2 运行 mongo

Go 复制代码
docker run -itd --name mongoserver -p 27017:27017 mongo:5.0.3

6.3 进入 mongo 容器

Go 复制代码
docker exec -it mongoserver mongosh
相关推荐
ly76897 小时前
Docker 从入门到实践:镜像、容器、Dockerfile 与 Docker Compose 详解
运维·docker·容器
梦梦代码精7 小时前
基于UniApp+Vue3+ThinkPHP 8,这套知识付费系统的架构设计有点东西
java·低代码·docker·uni-app·开源·php
moMo11 小时前
从“巨轮”到“本地开发”:用 Docker 和 Nginx 解决你的端口焦虑
nginx·docker
地衣君12 小时前
Hermes Docker 容器交互一些技巧
docker·hermes
陈聪.12 小时前
Docker 核心知识整理:从入门到企业级应用
运维·docker·容器
云原生指北13 小时前
Docker Sandboxes 的隔离例外:共享 Skills 与宿主机 MCP
运维·docker·ai·容器·agent
璃月听书人13 小时前
没有 Kubernetes,我用 700 行 Bash 实现了 Docker Compose 零停机平滑发布
docker
用户69190268133915 小时前
Docker基本概念
后端·docker·容器
江湖有缘15 小时前
从零搭建私有云相册:使用 Docker 一键部署 Damselfly全攻略
运维·docker·容器
摇滚侠15 小时前
《Docker技术入门与实战 第4版》阅读笔记 6 使用 Dockerfile 创建镜像 2
java·笔记·docker