Docker

Docker可以把项目和它所依赖的环境整合打包,非常方便!

Docker的思想就来自于集装箱,应用之间相互隔离,隔离的思想

Docker通过隔离机制,将服务器利用到极致

官网:https://www.docker.com/

仓库Docker Hub :https://hub.docker.com/

安装

docker 依赖运行的Linux内核环境,必须安装在Linux系统之上

CentOS(64-bit) 7上 内核版本3.8以上

查看内核版本

[root@XiangCheng /]# cat /etc/redhat-release      
CentOS Linux release 8.4.2105
[root@XiangCheng /]# uname -r
4.18.0-305.3.1.el8.x86_64
[root@XiangCheng /]# 

 

三件套:

镜像(image): 就是一个模板,可以用来创建Docker容器,就像面向对象中的类

容器(container):镜像的实例对象

仓库(repositiroy):集中存放镜像的场所

官方安装文档:https://docs.docker.com/engine/install/centos/

先卸载旧版本,没有可以忽略

 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

 

安装gcc相关依赖

yum -y install gcc
yum -y install gcc-c++

 

设置存储库

1.安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定的存储库。

$ sudo yum install -y yum-utils  

# 因为官方文档设置仓库地址是国外,这样会导致会很慢,
# 设置阿里云仓库

$ sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新一下yum软件包 索引
yum makecache fast

 

安装 启动 docker

# 安装docker
sudo yum install docker-ce docker-ce-cli containerd.io

# 启动docker
sudo systemctl start docker

# 查看doker 版本
docker version

# hello-world 通过运行映像来验证 Docker 引擎是否已正确安装。
 sudo docker run hello-world

 

 

卸载docker

# 停止docker服务
systemctl stop docker
# 移除docker 应用
yum remove docker-ce docker-ce-cli containerd.io
# 删除docker遗留文件
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

 

配置阿里云镜像加速器

 

 

命令

帮助启动类

 # 启动docker
systemctl start docker

# 停止docker
systemctl stop docker

# 重启docker
systemctl restart docker

# 查看docker 状态
systemctl status docker

#开机启动
systemctl enable docker

# 查看docker 概要信息
docker info

# 查看docker 总体帮助文档
docker --help

# 查看docker 命令帮助文档
docker 具体命令 -help
  

 

镜像命令

# 罗列出本机的镜像
docker images

# 罗处所以本机image ID
docker images -qa

REPOSITORY : 镜像的仓库源

TAG : 镜像的标签

IMAGE ID : 镜像ID

CREATED : 镜像创建时间

SIZE : 镜像大小

同一仓库源可以有多个tag版本,代表这个仓库源的不同版本,我们使用REPOSITORY:TAG来定义不同的镜像,如果你不指定以一个镜像的版本标签,例如你只使用ubuntu,docker将默认使用ubuntu:latest

# 去仓库查看某镜像
docker search [OPTIONS] 某镜像名字

--limit n  : 只列出排名前n个镜像

 

NAME: 镜像名称

DESCRIPTION: 镜像说明

STARS: 点赞数量

OFFICIAL: 是否是官方的

AUTOMATED: 是否是自动构建的

# 拉取某个镜像,没有TAG默认最新版本
docker pull 镜像名字[:TAG]
 

# 查看镜像 容器 数据卷所占的空间
docker system df

 

TYPE : 种类

Images(镜像) 、 Containers(容器 )、 Local Volumes ( 本地卷) Build Cache(构建缓存)

TOTAL : 总数

ACTIVE : 活动中

SIZE : 大小

RECLAIMABLE : 伸缩性

# 删除镜像
docker rmi [镜像名称|镜像ID]

# 强制删除镜像
docker rmi  -f [镜像名称|镜像ID]

# 删除多个
docker rmi -f [镜像名称1:TAG 镜像名2]

# 删除所有imgaes
docker rmi -f $(docker images -qa)

 

容器命令

拉取系统镜像

# 创建centos 镜像
docker pull centos
# 创建ubuntu 镜像
docker ubuntu

 

新建启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

[OPTIONS]
    --name="容器名"  :为容器指定一个名称
    -d  : 后台运行容器并返回容器ID,也即启动守护式容器(后台运行)
    -i  :以交互式模式运行容器,通常与 -t 同时使用
    -t  : 为容器重新分配一个伪输入终端,通常与-i 同时使用;也即启动交互式容器(前台有伪终端,等待交互)
    -P  :随机端口映射,大写P
    -p  :指定端口映射,小写p
    
    
 # 实例化一个ubuntu系统
docker run -it ubuntu /bin/bash

参数

说明

-p hostPort:containerPort

端口映射 -p 8080:80

-p ip:hostPort:containerPort

配置监听地址 -p 10.0.0.100:8080:80

-p ip::containerPort

随机分配端口 -p 10.0.0.100::80

-p hostPort:containerPort:udp

指定协议 -p 8080:80:tcp

-p 81:80 -p 443:443

指定多个

# 列出当前所有正在运行的容器实列
docker ps [OPTIONS]

[OPTIONS]
    -a:列出当前所有正在运行+历史上运行过的容器
    -l:显示最近创建的容器
    -n:显示最近n个创建的容器
    -q:静默模式,只显示容器编号
    
# 退出容器  退出后容器停止
exit   

#退出容器 容器不停止
ctrl+p+q

# 启动已停止运行的容器
docker start [容器ID|容器名]

# 重启容器
docker restart [容器ID|容器名]

# 停止容器
docker stop [容器ID|容器名]

# 强制停止容器
docker kill [容器ID|容器名]

#删除已停止的容器 ,如果未停止强制删加 -f 参数
docker rm 容器ID  

# 删除所有的容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm

# 查看某容器日志
docker logs [容器ID|容器名]

# 进入正在运行的容器
docker exec -it [容器ID] /bin/bash  推荐
docker attach [容器ID]

# 把容器内的文件复制到主机
docker cp 容器ID:容器内路径 目的主机路径

# 导出容器,做备份
docker export 容器ID > 文件名.tar

# 导入一个镜像
cat 文件名.tar | docker import -镜像用户/镜像名:镜像版本号

 

安装一些软件

tomcat

# 拉取tomcat 镜像
docker pull billygoo/tomcat8-jdk8

# 直接执行,没有会自动拉
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8

 

mysql

# 安装镜像
docker pull mysql:5.7

# 创建一个简单容器
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=hd123456 -d mysql:5.7

# 创建mysql挂上数据卷


docker run -d -p 3306:3306 --privileged=true -v /xc/mysql/log:/var/log/mysql -v /xc/mysql/data:/var/lib/mysql -v /xc/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=hd123456 --name mysql01 mysql:5.7





SHOW VARIABLES LIKE 'character%'

 

在宿主机 conf下 :

vi my.cnf



# 输入以下数据

[client]
default_character_set=utf8


[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8



# 在重启容器
docker restart mysql01

 

posted @ 2022-04-16 10:37  钟鼎山林  阅读(35)  评论(0编辑  收藏  举报