docker常用命令

3-5 Docker虚拟机(下) - 图1

  • Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明
  • docker images 查看所有镜像
  1. service docker start 启动docker
  2. service docker stop 关闭docker
  3. service docker restart 重启docker
  4. service docker status

配置docker加速器

在线安装Java镜像

阿里云不需要配置 加速器

  1. docker search java 查找镜像
  2. docker pull java 下载镜像
  3. docker images 列出本地镜像

image.png

导出导入镜像

安装镜像之后,想备份镜像,如何做呢?
docker save 将指定镜像保存成 tar 归档文件
docker rmi 删除镜像
docker load 导入镜像到本地
docker images 列出本地镜像

  1. docker save java > /home/java.tar.gz
  2. docker rmi java
  3. docker load < /home/java.tar.gz
  4. docker images

启动容器

  • 启动镜像会创建出一个运行状态的容器,使用run指令
  1. docker run it --name myjava java bash
  2. # java bash 也可以带参数,如下:
  3. docker run it --name myjava -p 9000:8080 -p 9001:8085 java bash
  4. 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 查看容器

3-5 Docker虚拟机(下) - 图3

  1. docker run -it -p 9000:8080 -p 9001:8085 -v /home/docker/test/project:/soft --privileged --name myjava java bash

3-5 Docker虚拟机(下) - 图4
-it 指令:是启动一个交互的界面,如果不加-it,是不会有这样的界面的,还是停留在宿主机的界面
这里是后来又再次执行命令:

  1. docker run -it -p 9000:8080 -p 9001:8085 -v /home/dockerDir/java:/soft --privileged --name myjava docker.io/java bash

3-5 Docker虚拟机(下) - 图5

  • 测试java是否好用

javac 回车
3-5 Docker虚拟机(下) - 图6
java -version 查看java版本
3-5 Docker虚拟机(下) - 图7
ls -l
3-5 Docker虚拟机(下) - 图8

  • 测试映射的目录是否好用

cd /soft
mkdir test
cd ./test
touch hello.txt
echo Thanks > hello.txt
3-5 Docker虚拟机(下) - 图9
exit 退出容器,且容器也停止运行了
查看宿主机是否有该test文件夹及hello.txt文件
3-5 Docker虚拟机(下) - 图10

管理容器状态的指令

  1. docker pause myjava
  2. docker unpause myjava
  3. docker stop myjava
  4. docker start -i myjava
  5. # 进入容器
  6. 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 : 恢复一个容器
3-5 Docker虚拟机(下) - 图11

如何删除一个容器

删除容器的时候,需要彻底将这个容器停止运行,执行
docker stop myjava //停止容器
docker rm myjava //删除容器
docker ps -a //查看容器
3-5 Docker虚拟机(下) - 图12

数据卷

创建Docker卷,v1是卷的名字
docker volume create —name v1
# 查看docker卷所在位置
docker inspect v1
# 删除数据卷
docker volume rm v1