文章目录
一、启动镜像
1)启动镜像
说明: 因启动命令参数过多,同时各种镜像启动时可以增加额外的参数,本次以启动mysql5.6为例
命令格式
docker run -p 本机映射端口:镜像映射端口 -d --name 启动镜像名称 -e 镜像启动参数 镜像名称:镜像版本号
参数释义
-p 本机端口和容器启动端口映射(指定端口映射)
-P 随机端口映射
-d 后台运行
-i 以交互模式运行容器
-t 为容器重新分配一个伪输入终端
--name 容器名称
-e 镜像启动参数
-net:网络模式
示例
例1:docker run -p 3306:3306 -d --name mysql01 -e MYSQL_ROOT_PASSWORD=admin mysql:5.6
例2:docker run -i -t --name mycentos
例3:docker run -d mycentos
2)启动一个或多个已经被停止的容器
docker start redis
docker stop redis
3)重启容器
docker restart redis
参考官方文档 https://hub.docker.com/_/mysql)
二、常用命令
1)镜像操作相关命令
备注:对于镜像的操作可使用镜像名、镜像长ID和短ID
命令 | 含义 | 示例 |
---|---|---|
docker search 镜像名称 | 搜索镜像 | docker search java |
docker pull java:8 | 从仓库中下载镜像,若要指定版本,则要在冒号后指定 | docker pull java:8 |
docker pull -a java | 下载仓库所有java镜像 | |
docker images | 列出已经下载的镜像 | |
docker rmi java | 删除本地镜像 | |
docker rmi -f java | 强制删除(针对基于镜像有运行的容器进程) | |
docker rmi -f redis tomcat nginx | 多个镜像删除,不同镜像间以空格间隔 | |
docker rmi -f $(docker images -q) | 删除本地全部镜像 | |
docker build | 构建镜像 | |
docker run | docker run -p 本机映射端口:镜像映射端口 -d --name 启动镜像名称 -e 镜像启动参数 镜像名称:镜像版本号 docker run -p 本机映射端口:镜像映射端口 -d —ImageId 启动镜像Id -e 镜像启动参数 镜像名称:镜像版本号 | 参数释义: -p 本机端口和容器启动端口映射 -d 后台运行 --name 容器名称 -e 镜像启动参数 |
docker commit | **docker commit 😗*从容器创建一个新的镜像。 |
3)容器操作相关命令
命令 | 含义 | 示例 |
---|---|---|
docker ps | 查看当前启动的镜像 | docker ps |
docker stop 镜像实例ID | 停止镜像 | docker stop fe754db626db |
docker ps -a | 查看所有镜像(包括未启动的) | docker ps -a |
docker start 镜像实例ID | 当镜像实例已经存在时,重新启动镜像 | docker start fe754db626db |
docker start 镜像名称 | 当镜像实例已经存在时,重新启动镜像 | docker start mysql01 |
docker rm 镜像实例ID | 删除镜像实例(删除已停止的容器) | docker rm fe754db626db |
docker rm -f 容器id | 删除正在运行的容器 | |
docker kill 容器id | 强制停止容器 | |
docker inspect 容器id | 查看容器的所有信息 | |
docker container logs 容器id | 查看容器日志 | |
docker top 容器id | 查看容器里的进程 | |
docker exec -it 容器id /bin/bash | 进入容器 | |
exit | 退出容器 | |
sudo docker ps -a -q | 查看所有容器ID | |
sudo docker stop $(sudo docker ps -a -q) | stop停止所有容器 | |
sudo docker rm $(sudo docker ps -a -q) | remove删除所有容器 | |
docker stop $(docker ps -q) & docker rm $(docker ps -aq) | 一次性停止删除容器 |
三、导入导出操作命令介绍
save
-
命令
docker save [options] images [images...]
-
示例
docker save -o nginx.tar nginx:latest 或 docker save > nginx.tar nginx:latest
其中-o和>表示输出到文件,
nginx.tar
为目标文件,nginx:latest
是源镜像名(name:tag)
load
-
命令
docker load [options]
-
示例
docker load -i nginx.tar 或 docker load < nginx.tar
其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息
export
-
命令
docker export [options] container
-
示例
docker export -o nginx-test.tar nginx-test
其中-o表示输出到文件,
nginx-test.tar
为目标文件,nginx-test
是源容器名(name)
import
-
命令
docker import [options] file|URL|- [REPOSITORY[:TAG]]
-
示例
docker import nginx-test.tar nginx:imp 或 cat nginx-test.tar | docker import - nginx:imp
差异
- export命令导出的tar文件略小于save命令导出的
- export命令是从容器(container)中导出tar文件,而save命令则是从镜像(images)中导出
- 基于第二点,export导出的文件再import回去时,无法保留镜像所有历史(即每一层layer信息,不熟悉的可以去看Dockerfile),不能进行回滚操作;而save是依据镜像来的,所以导入时可以完整保留下每一层layer信息。如下图所示,
nginx:latest
是save导出load导入的,nginx:imp
是export导出import导入的。
建议
可以依据具体使用场景来选择命令
- 若是只想备份images,使用save、load即可
- 若是在启动容器后,容器内容有变化,需要备份,则使用export、import
三、容器进程
- 格式
docker top [OPTIONS] CONTAINER [ps OPTIONS]
- 列出redis容器中运行进程
docker top redis
- 查看所有运行容器的进程信息
for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
四、容器日志
- 查看redis容器日志,默认参数
docker logs rabbitmq
- 查看redis容器日志,参数:-f 跟踪日志输出;-t 显示时间戳;–tail 仅列出最新N条容器日志;
docker logs -f -t --tail=20 redis
- 查看容器redis从2019年05月21日后的最新10条日志。
docker logs --since="2019-05-21" --tail=10 redis
五、容器与主机间的数据拷贝
从容器里面拷文件到宿主机
公式: docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
- 将rabbitmq容器中的文件copy至本地路径()
- docker cp rabbitmq:/[container_path] [local_path]
从宿主机拷文件到容器里面
**公式:**docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
- 将主机文件copy至rabbitmq容器
docker cp [local_path] rabbitmq:/[container_path]/ - 将主机文件copy至rabbitmq容器,目录重命名为[container_path](注意与非重命名copy的区别)
docker cp [local_path] rabbitmq:/[container_path]
六、构建镜像
1)基于dockerfile构建
docker build -f /docker/dockerfile/mycentos -t mycentos:1.1
2)基于已有镜像构建镜像
docker commit的语法规则及可选项介绍
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Options:
-a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")#作者信息
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Commit message #说明信息
-p, --pause Pause container during commit (default true) #生成过程中停止容器的运行