docker常用命令
- Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明
- docker images 查看所有镜像
service docker start 启动docker
service docker stop 关闭docker
service docker restart 重启docker
service docker status
配置docker加速器
在线安装Java镜像
阿里云不需要配置 加速器
docker search java 查找镜像
docker pull java 下载镜像
docker images 列出本地镜像
导出导入镜像
安装镜像之后,想备份镜像,如何做呢?
docker save 将指定镜像保存成 tar 归档文件
docker rmi 删除镜像
docker load 导入镜像到本地
docker images 列出本地镜像
docker save java > /home/java.tar.gz
docker rmi java
docker load < /home/java.tar.gz
docker images
启动容器
- 启动镜像会创建出一个运行状态的容器,使用run指令
docker run it --name myjava java bash
# java bash 也可以带参数,如下:
docker run it --name myjava -p 9000:8080 -p 9001:8085 java bash
docker run it --name myjava -v /home/project:/soft --privileged java bash
docker run it —name myjava java bash
这里的意思是:
run 创建并启动一个容器,
-it 启动一个容器之后 开启一个交互的界面
—name 给容器起一个名称,如果不起名字,这个容器就没有名称,可以根据容器id去操作这个容器,例如这里:—name myjava,这个容器的名字叫myjava
java bash: 启动哪个镜像,bash 代表启动的是命令行端口映射命令
docker run it —name myjava -p 9000:8000 -p 9001:8085 java bash
-p 9000:8080: 9000代表的是宿主机的端口,8080 代表的是容器的端口,这句话的意思是:将宿主机的9000端口映射到容器的8080端口上
-p 9000:8000 -p 9001:8085:想映射几个端口,就写几个p就可以了
文件映射命令
将容器里的某个文件映射到宿主机上的文件上,比如:docker安装了mysql,mysql的数据文件必须要在宿主机上,如果在docker容器了,文件就没有了
docker run it —name myjava -v /home/project:/soft —privileged java bash
-v /home/project:/soft :如果有多个可以写多个,前半部分(/home/project)是宿主机的文件目录,后面的是容器的目录(/soft)
-v:映射的文件夹
—privileged : 是权限的参数,是用的最高权限,读写都是可以的文件映射具体实践如下:
mkdir /home/docker/test/project 创建测试目录
- docker images 查看容器
docker run -it -p 9000:8080 -p 9001:8085 -v /home/docker/test/project:/soft --privileged --name myjava java bash
-it 指令:是启动一个交互的界面,如果不加-it,是不会有这样的界面的,还是停留在宿主机的界面
这里是后来又再次执行命令:
docker run -it -p 9000:8080 -p 9001:8085 -v /home/dockerDir/java:/soft --privileged --name myjava docker.io/java bash
- 测试java是否好用
javac 回车
java -version 查看java版本
ls -l
- 测试映射的目录是否好用
cd /soft
mkdir test
cd ./test
touch hello.txt
echo Thanks > hello.txt
exit 退出容器,且容器也停止运行了
查看宿主机是否有该test文件夹及hello.txt文件
管理容器状态的指令
docker pause myjava
docker unpause myjava
docker stop myjava
docker start -i myjava
# 进入容器
docker exec -it gxbgHt bash
docker pause [容器名称 || 容器编号]: 暂停容器
docker unpause [容器名称 || 容器编号]: 恢复容器的运行
docker stop [容器名称 || 容器编号]:彻底停止一个容器
docker start -i [容器名称 || 容器编号]:恢复运行一个容器
退出容器时使用:exit, 也会使该容器停止
具体实践如下
- 运行一个容器: docker start -i myjava
因为刚才使用exit退出,容器已经停止了,所以使用 docker start -i
- 另外再开一个窗口,进入centOs系统,执行
docker pause myjava :暂停一个容器
docker unpause myjava : 恢复一个容器
如何删除一个容器
删除容器的时候,需要彻底将这个容器停止运行,执行
docker stop myjava //停止容器
docker rm myjava //删除容器
docker ps -a //查看容器