docker常用命令
1、 服务启动
- systemctl start docker
2、帮助命令
- docker version
- docker info
- docker --help
3、镜像命令
- docker images
- docker search xxx
- docker pull xxx
- docker rmi -f xxx
4、容器命令
新建并启动容器
- docker run [OPTIONS] 镜像 [COMMAND]
eg: docker run -it centos /bin/bash
OPTIONS说明; -i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-p: 指定端口映射,eg:
(tomcat) docker run -d -p 7788:8080 tomcat
(mysql)docker run --name=mysql -itd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abcd123 mysql
(mysql)docker exec -it MySQL运行成功后的容器ID /bin/bash
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
COMMAND说明;/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
列出正在运行的容器:
- docker ps [OPTIONS]
OPTIONS说明 ;-a :列出当前所有正在运行的容器+历史上运行过的
-q :静默模式,只显示容器编号。
退出容器:
- exit
启动容器:
- docker start 容器名称或者容器id
重启容器
- docker restart 容器名称或者容器id
停止容器
- docker stop 容器名称或者容器id
强制停止容器
- docker kill 容器名称或者容器id
删除已经停止的容器
- docker rm 容器id
查看容器内运行的进程
- docker top 容器id
查看 Docker 的底层信息
- docker inspect 容器id
进入正在运行的容器并以命令交互
- docker exec -it 容器id /bin/bash 此退出(exit)容器终端,不会导致容器的停止
- docker attach 容器id
5、docker容器数据卷
容器内添加数据卷(通过命令)
-v 卷:volume
- docker run -it -v /宿主机目录(执行命令时自动新建):/容器内目录 (执行命令时自动新建)镜像 /bin/bash
- docker run -it -v /宿主机目录(新建):/容器内目录 (新建) ro 镜像 /bin/bash 设置容器为只读权限
查看数据卷是否挂载成功
- docker inspect 容器ID
容器和宿主机之间数据共享官,容器停止退出后,主机修改后数据同步
容器内添加数据卷(dockerFile添加):
1、根目录 下新建mytest文件并进入 mkdir mytest
2、 vim Dockerfile 使用VOLUME指令来给镜像添加—个或多个数据卷
(代码是创建dataVolumeContainer1、dataVolumeContainer2两个文件:)
# volume test
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,--------success1"
CMD /bin/bash
3、 创建镜像 build后生成一个新镜像 docker build -f /mytest/Dockerfile -t xxxx/centos . {!!!最后有一个点!!!}
-f :指定要使用的Dockerfile路径
-t: 创建镜像的名字
操作在容器中的卷,可以在主机的路径下查看,以此共享数据
5.1、数据卷容器
命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器。
eg:1、先启动一个容器dc01,在dataVolumeContainer2中添加文件数据
docker run -it --name doc1 xxxx/centos
2、dc02/dc03继承自dc01 命令:--volumes-from
docker run -it --name dc02--volumes-from dc01 xxxx/centos 可以在dc01中看到dataVolumeContainer2添加的文件数据 do03同理
若在dc02或者dc03修改文件在dc01中同样可以看到。
3、dc01被rm -f 之后,修改dc02的数据,dc03仍能访问
容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止
6、dockerfile具体解析