【工具】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
相关推荐
Just_Do_IT_OK3 小时前
Docker--MySql
mysql·docker·容器
正儿八经的地球人5 小时前
Docker【初识Docker】
docker·容器·eureka
Just_Do_IT_OK5 小时前
Docker--Bitnami/mongodb
docker·容器
bennybi6 小时前
基于Docker的ETCD分布式集群
分布式·docker·etcd
Just_Do_IT_OK6 小时前
Docker--Bitnami/kafka
docker·容器
Bright16687 小时前
Docker部署skywalking
docker·容器·skywalking
Just_Do_IT_OK8 小时前
Docker--Bitnami/redis
docker·容器
飞翔沫沫情8 小时前
《快速部署Mysql-slave 容器,实现高效主从同步》
数据库·docker·mysql主从同步
享受 生活9 小时前
【docker】docker desktop 在windows上支持 host模式
运维·docker·容器
观测云9 小时前
Docker Container 可观测性最佳实践
运维·docker·容器