Docker(二):docker常用命令
一、帮助命令
1、docker 帮助命令
命令 | 说明 |
docker version / docker -v | 查看docker的版本信息 |
docker info | 查看docker详细信息 |
docker --help / docker -h | 查看docker帮助命令,可以查看到相关的其他命令 |
二、Docker镜像命令
1、docker pull
从远程仓库docker hub 上拉取镜像
命令格式:
docker pull imageName<:version>
imageName -- 要拉取的镜像名称
:version -- 拉取镜像的版本号,可选项;
docker pull 拉取镜像时若不加版本号,则表示拉取最新版本的镜像,
如:执行命令 docker pull mysql:5.7 和 docker pull mysql
2、docker images
列出本地主机上所有的镜像,参数说明:
参数 | 说明 |
---|---|
-a | 列出本地所有的镜像 |
-q | 只显示镜像ID |
--digests | 显示镜像的摘要信息 |
--no-trunc | 显示完整的镜像信息 |
如下图所示:
镜像信息说明:
选项 | 说明 |
---|---|
REPOSITORY | 表示镜像的仓库源 |
TAG | 镜像的标签 |
IMAGE ID | 镜像ID |
CREATED | 镜像创建时间 |
SIZE | 镜像大小 |
3、docker rmi
docker rmi 用于删除镜像文件,命令格式如下:
删除方式 | 命令 |
---|---|
删除单个 | docker rmi -f 镜像ID |
删除多个 | docker rmi -f 镜像1:TAG 镜像2:TAG |
删除全部 | docker rmi -f $(docker images -qa) |
-f : 表示强制删除,一般若镜像文件已经容器,则需要加上参数 -f 强制删除。
注意:若容器已经在运行中,则需先执行命令 “docker stop 容器ID” 先停止
容器,然后再删除,注意:此时对应的容器并没有被删除
如下图所示:
三、Docker 容器命令
1、docker ps
docker ps 用于查看本地正在运行的容器
命令 | 说明 |
docker ps | 查看本地正在运行的容器 |
docker ps -a | 查看本地正所有的容器,包括停止的和正在运行的 |
docker ps -all | 查看本地正所有的容器,包括停止的和正在运行的 |
docker ps --all | 查看本地正所有的容器,包括停止的和正在运行的 |
docker ps --qa | 查看本地正所有容器的容器ID |
如下图所示:
2、docker run
docker run 是最重要的一个命令,主要用于创建并运行一个容器;
命令如下:
docker run [OPTIONS] IMAGE:TAG
OPTIONS 中的一些参数说明:
options | 说明 |
---|---|
--name | "容器新名字": 为容器指定一个名称 |
-d | 后台运行容器,并返回容器ID,也即启动守护式容器 |
-i | 以交互模式运行容器,通常与 -t 同时使用 |
-t | 为容器重新分配一个伪输入终端,通常与 -i 同时使用 |
-P: | 随机端口映射 |
-p | 指定端口映射,有以下四种格式 ip:hostPort:containerPort ip::containerPort
containerPort |
下边以在docker中安装Mysql7为例来看下 docker run 命令的用法;
2.1、查看mysql7镜像文件是否存在,若不存在则执行 docker pull mysql:5.7拉取 mysql5.7 的镜像
2.2、在指定目录下(如 /root/docker)创建目录 mysql/mysql、mysql/conf、mysql/log,分别用于
存放Docker中mysql7容器的运行数据、配置文件、日志;并在 conf 目录下创建mysql的配置
文件 my.cnf,在mysql7容器创建的时候将 这些 文件或目录映射到容器的指定目录;
如下图所示:
2)编辑配置文件my.cnf,配置mysql,内容如下:
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
#log-error = /var/log/mysql/error.log
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0max_connections = 2000
max_user_connections = 1900
max_connect_errors = 100000
max_allowed_packet = 50M
lower_case_table_names=1
[mysqld]
skip-name-resolve
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
2.3、执行docker run 创建并启动mysql 容器
命令:
docker run -p 3306:3306 --name mysql5.7 -v /root/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /root/docker/mysql/log:/logs -v /root/docker/mysql/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
命令解析:
docker run : 运行容器-p 本机port : docker容器port 端口映射
--name 容器名称,如:--name mysql5.7;
-v 本机文件路径 : docker文件路径 -- > 用于将本地文件挂载到docker容器指定文件;
MYSQL_ROOT_PASSWORD : 设置MySQL的root 用户的初始密码密码,
如:MYSQL_ROOT_PASSWORD=123456;
-d :后台运行容器,并返回容器ID;
mysql : 镜像名称,表示运行mysql 镜像,一般写在最后
3、docker exec 命令
docker exec 进入容器并在容器中打开新的终端,可以在容器的终端中执行命令,并将
命令执行结果输出到当前的终端中,
命令格式:
docker exec -it 容器名称或容器ID [需要执行的命令]
如:以上边容器 mysql5.7 为例来进入容器中的mysql bash,并设置 mysql 权限,使之可以远
程访问,
1)执行命令:docker exec -it mysql5.7 bash 进入容器mysql5.7中
2)执行命令 mysql -uroot -p 启动mysql5.7的客户端,输出上边设置的密码“123456” 后
进入mysql 客户端
在mysql 客户端中执行如下命令用来设置mysql 的远程连接,如下所示:
//授权mysql 的root 用户可以远程连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' with grant option;//刷新权限
flush privileges;//更改加密规则,并设置docker中的mysql 本地登录密码为 123456
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER; //设置root远程连接密码为123456:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';//刷新权限
flush privileges;
3)使用 Navicat 测试,数据库远程连接是否成功
4、exit 命令
exit 用于退出容器终端
5、docker stop
docker stop 用来关闭(停止)正在运行的容器;
命令格式:docker stop 容器id或容器名称
如执行命令 docker stop redis 来关闭名称是 redis 的容器,如下图所示:
6、docker start
docker start 用于启动容器
命令格式:docker start 容器ID或者容器名称
如:执行命令 docker start redis 启动上边停止的容器 redis,如下图所示:
7、docker restart
docker restart 用来重启指定容器
命令格式:docker restart 容器id或者名称
如:执行命令 docker restart redis 来重启 redis容器,如下图所示:
8、docker kill
docker kill 用来强制停止指定容器
命令格式:docker kill 容器ID或者名称
如:执行命令 docker kill redis 来强制停止容器 redis,如下图所示:
9、docker rm
docker rm 用于删除指定容器,
注意:正在运行中的容器不能删除,运行中的容器需要先停止再删除
命令格式:
docker rm 容器ID或者名称;
docker rm -f 容器ID或者名称; -f 表示强制删除指定容器
如:执行命令 docker rm redis-6379 来删除容器 redis-6379,如下图所示: