【工具】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
相关推荐
mseaspring5 小时前
一款用于监控跨多台主机 Docker 容器的实时终端
运维·docker·容器
SPC的存折9 小时前
6、Docker常用配置
运维·docker·容器
图图玩ai10 小时前
SSH 命令管理工具怎么选?从命令收藏到批量执行一次讲清
linux·nginx·docker·ai·程序员·ssh·可视化·gmssh·批量命令执行
SPC的存折11 小时前
4、Docker私有仓库
运维·docker·容器
齐潇宇12 小时前
Docker概述与安装
linux·运维·docker·容器
亚空间仓鼠13 小时前
Docker 容器技术入门与实践 (二):Dockerfile文件
运维·docker·容器
亚空间仓鼠13 小时前
Docker 容器技术入门与实践 (一):命令与镜像、容器管理
运维·docker·容器
东北甜妹14 小时前
Docker 多阶段构建
运维·docker·容器
Zhu75814 小时前
【软件部署】docker环境部署nagios
运维·docker·容器
IT从业者张某某14 小时前
Docker 网络
网络·docker·容器