systemctl start|restart|stop docker
systemctl status docker
docker info
docker --help
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
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 pull --platform=linux/amd64 [imagename]
dockerfile
中的基础镜像可以选择自己需要的平台:FROM --platform=linux/amd64 [imagename]
docker run --platform=linux/amd64 [imagename]
Docker 支持的平台非常广泛,包括但不限于以下几种:
linux/amd64
:x86 架构的 Linux 系统,例如常见的 PC 和服务器。linux/arm64
:ARM 架构的 Linux 系统,例如 Raspberry Pi。linux/ppc64le
:IBM Power 架构的 Linux 系统。linux/s390x
:IBM Z 架构的 Linux 系统。另外,还可以使用通配符来指定多个平台。例如,linux/*
表示所有的 Linux 平台,*/*
表示所有的平台。
docker search mysql
进行命令查找在Xshell中,执行如下命令,即可下载镜像
docker pull mysql:5.7
校验镜像是否下载完成
docker images
Docker容器的运行命令是:docker run
docker run --name mysql01 -p 3306:3306 -v /root/mysql/data:/var/lib/mysql --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
属性:
--name mysql01
:给Docker容器 定义一个名称mysql01-p 3306:3306
:将宿主机的3306 映射到Docker容器内部的3306上 (第1个是外部的)-v /root/mysql/data:/var/lib/mysql
:表示目录映射关系(前者":
前"是宿主机目录,后者是容器被映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。--privileged=true
:将Docker容器的权限,设置为最高权限 root-e MYSQL_ROOT_PASSWORD=123456
:配置Docker内部的环境变量-d
:让容器在后端运行mysql:5.7
:镜像的名称检验Docker容器是否启动成功
docker ps
避坑:docker中MySQL的默认字符集编码是latin1,插入中文会出现乱码show variables like 'character%'
docker run --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345 -i -t -v /root/mysql/data:/var/lib/mysql --privileged=true mysql:5.7 /bin/bash
-i
:以前台运行模式进行启动docker容器-t
:为容器重新分配一个伪输入终端,通常与 -i 同时使用/bin/bash
:让容器启动完毕后,开启一个内部进程启动命令,对日志、数据、配置进行数据卷备份
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 pull daocloud.io/library/tomcat:8.5.15-jre8
docker images
docker run -d -p 8080:8080 --name mytomcat daocloud.io/library/tomcat:8.5.15-jre8
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
运行完成,可以在目录中看到创建的数据卷目录
-v 宿主机目录:容器中目录
,将容器里面的目录,映射到宿主机上,可以在宿主机对容器类的文件进行更改,同步到容器将war文件上传到数据卷目录中
如果访问不到,重启一次容器,就可以了
docker restart mytomcat