2、Docker的使用

Docker相关命令

帮助启动类

启动、重启、停止docker

systemctl start|restart|stop docker

查看docker状态

systemctl status docker

查看docker概要信息

docker info

查看docker总体帮助文档

docker --help

查看docker命令帮助文档

docker [command] --help

镜像类

查看本地镜像

如果一个镜像仓库名和tag都是<none>,那么就称为虚悬镜像(dangling image)

docker images
-a #列出本地所有镜像,含历史映像层
-q #只显示镜像id

查询镜像

docker search [name]
--limit [size] #最显示size个,默认25个

拉取镜像

docker pull [name]
docker pull [name]:[tag]

查看镜像、容器、数据卷所占空间

docker system df

删除镜像

docker rmi [name/id] [name/id] ...
-f #强制删除,如果提示该镜像使用过无法删除,可以使用这个参数
${docker images -qa} #删除全部镜像

导入导出镜像

可以将镜像保存为tar文件

docker save -o [tarpath] [imagename/id]
或
docker save [imagename/id]>[tarpath]
docker load<[tarpath]
docker tag [id] [name:tag]

容器类

新建并启动容器

docker run [options] [name/id] [command] [arg...]
--name=[name] #为容器指定一个名字con
-d #后台运行并返回容器id,也就是启动守护式容器
-i #以交互式运行容器,通常与-t一起使用
-t #为容器重新分配一个伪输入终端,通常与-i一起使用,通常在整个run命令后加/bin/bash
-P #随机端口映射
-p [hostport:containerport] #指定端口映射
-v [hostpath:containerpath] #将容器中的目录映射到宿主机目录,一定要配合--privileged=true使用
-e [key=value] #设置容器内的环境变量
--privileged=true #将容器的权限,设置为最高权限root

注意:docker容器运行必须要有一个前台进程,容器运行的命令如果不是一直挂起的命令(top、tail等)就会自动退出,一般可以使用-dit

避坑:如果在启动时出现警告IPv4相关

WARNING: IPv4 forwarding is disabled. Networking will not work.

#进行编辑配置文件
vi /usr/lib/sysctl.d/00-system.conf
#在其中添加一段
net.ipv4.ip_forward=1
#重启网络
service network restart

查看容器

docker ps
-a #查看所有运行的容器,包括已经退出的
-n [size] #查看最近size个容器
-l #查看最近创建的一个容器
-q #只显示容器编号

退出容器

exit #退出容器,并且容器停止
ctrl+p+q #退出容器,容器不会停止

启动已停止容器

docker start [name/id]

重启正在运行的容器

docker restart [name/id]

停止正在运行的容器

docker stop [name/id]
docker kill [name/id] #强制停止

删除已停止的容器

docker rm [name/id]
-f #强制删除,可删除正在运行的

进入容器

docker exec -it [name/id] /bin/bash
docker attach [name/id]
#区别:
attach直接进入容器启动命令的终端,不会启动新的线程,exit会导致容器停止
exec在容器中打开新的终端,并且会启动新的线程,exit不会导致容器停止

查看容器日志

docker logs -f [name/id]

查看容器内运行的进程

docker top [name/id]

查看容器内部细节

docker inspect [name/id]

从容器内拷贝文件到主机

docker cp [containername/id]:[containerpath] [localpath]

从主机拷贝文件到容器

docker cp [localpath] [containername/id]:[containerpath]

导入导出容器

docker export [containername/id] > [name.tar]
cat [name.tar] | docker import - name:tag

容器保存为镜像

docker commit -a=[作者] -m=[备注] [容器ID] [仓库名称]:[TAG]
#注意:挂载类似软连接(快捷方式),挂载目录新增文件在容器中不会新增,容器只是引用了挂载目录的新增文件,本地容器打包为本地镜像前必须将宿主机的挂载目录新增文件拷贝到对应的容器目录中,否则挂载目录的新增文件无法被打包到本地镜像

跨平台使用

在 Docker 中,平台是指硬件和操作系统的组合。不同的硬件架构和操作系统版本具有不同的特性和限制。常见的硬件架构包括 x86、 x86_64、 ARM 和 ARM64 等,常见的操作系统包括 Linux、 Windows 和 macOS 等。

支持的平台

Docker 支持的平台非常广泛,包括但不限于以下几种:

另外,还可以使用通配符来指定多个平台。例如,linux/* 表示所有的 Linux 平台,*/*表示所有的平台。

Docker安装、启动常用镜像

一、Docker安装MySQL

  1. 从官网上https://hub.docker.com/ 进行镜像的搜索(推荐)
  2. 或者使用docker search mysql进行命令查找

1、下载MySQL镜像

image-20210904121942614

2、Docker后台模式运行MySQL

避坑:docker中MySQL的默认字符集编码是latin1,插入中文会出现乱码show variables like 'character%'

3、使用navicat链接mysql

image-20210904130251065

4、Docker前台模式运行MySQL

img

前台模式和后台模式的区别

5、生产环境使用MySQL

启动命令,对日志、数据、配置进行数据卷备份

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

在宿主机/docker/mysql/conf路径下,添加配置文件my.conf解决中文乱码

[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8

重启mysql,使配置文件生效

docker restart mysql

二、Docker安装Tomcat

1、下载镜像

docker pull daocloud.io/library/tomcat:8.5.15-jre8

image-20210904130738946

2、运行镜像

docker run -d -p 8080:8080 --name mytomcat daocloud.io/library/tomcat:8.5.15-jre8

3、进行访问

image-20210904133118529

4、挂载war文件

4.1、运行tomcat,并且
docker run -d -p 8080:8080 --name mytomcat --privileged=true -v /root/tomcat/webapps:/usr/local/tomcat/webapps daocloud.io/library/tomcat:8.5.15-jre8

运行完成,可以在目录中看到创建的数据卷目录

image-20210904133952720

4.2、上传war文件

将war文件上传到数据卷目录中

image-20210904141624203

4.3、进行访问

image-20210904141959739

如果访问不到,重启一次容器,就可以了

docker restart mytomcat