1 安裝
- docker建议安装在Centos7以上版本
- 以前如果安装了旧版请先卸载:
sudo yum remove docker \
docker-common \
docker-selinux \
docker-engine
- 然后安装:
sudo yum install -g docker-ce
- 验证安装是否成功:
docker --version
1.1 镜像加速
- docker默认从dockerHub上下载镜像,速度较慢,建议连接阿里云镜像服务器获得加速
- 进入阿里云容器镜像加速服务网站,登陆并进入管理控制台:
https://www.aliyun.com/product/acr?spm=5176.202918.1263681.2.1bf54ef51HwG0Z - 选择镜像加速,并按提示操作:
- 验证是否加速成功:
docker info
2 常用命令
2.1镜像命令
2.1.1 docker images
查看本机已下载的镜像,如图所示:
Options说明:
2.1.2 docker search
2.1.3 docker pull
docker pull XXX:latestXXX
代表镜像名字,:
后跟想下载的版本号,也可以直接docker pull XXX
,代表下载最新
2.1.4 docker rmi
2.2 容器命令
2.2.1 新建并启动容器
- docker run [OPTIONS] image [COMMONAD] [Args]
eg: docker run -it --name=centos01 centos
启动一个centos的容器,通过伪终端以交互模式运行,并命名容器为centos01
2.2.2 列出当前正在运行的容器
docker ps [OPTIONS]
2.2.3 容器退出方式
2.2.3.1 容器不停止退出后的操作
-
docker attach [CONTAINER ID]
:重新进入容器 -
docker exec [CONTAINER ID] [ARGS]
:带着[ARGS]这个命令进入容器并执行,但对话窗口仍然在主机
2.2.4 容器启动、重启、缓慢停止、强制停止、删除
- 启动:
docker start[CONTAINER ID]
- 重启:
docker restart [CONTAINER ID]
- 缓慢停止(正常关机):
docker stop [CONTAINER ID]
- 缓慢停止(拔电源):
docker kill [CONTAINER ID]
- 删除( -f 强制删除):
docker rm [CONTAINER ID]
- 删除多个:
docker rm -f $(docker ps -a -q)
和docker ps -a -q | xargs docker rm
2.2.5 拷贝容器内文件至主机
docker cp 容器ID:容器内路径 目的主机路径
2.3 Commit命令
-
docker run -it -p 8888:8080 tomat
:将容器的8080端口映射到主机的8888端口,此时访问主机的8888端口等于在访问容器的localhost:8080 docker run -it -P tomat
:让docker随机分配一个端口来匹配容器内tomcat的8080端口,结果如下所示- 假设删除tomcat的文档,来模拟修改后的tomcat,来学一下conmit命令
- 提交这个没有文档的tomcat
docker commit [OPTIONS] [CONTAINER ID] [ARGS]
-a
表作者,-m
表评论信息[ARGS] 表命名空间,其中:后面跟版本号
- 启动这个没有doc的tomcat
docker run -it -p 7777:8080 atguigu/tomcat02:1.2
,注意版本号一定要加上,不然docker会去启动atguigu/tomcat:latest版本,而这明显是找不到的。
2.4 容器数据卷
2.4.1 使用命令-v添加数据卷
docker run -it -v /宿主机目录:/容器内目录 centos /bin/bash
- 效果展示如下
注意,添加数据券后,即使容器关闭,当主机数据券改动时,仍会同步到容器。另:docker run -it -v /宿主机目录:/容器内目录:ro centos /bin/bash
这个命令中添加了:ro
,将会把数据卷改为只读
。
2.4.1 dockerFile添加数据卷
- 思考一个问题,使用-v命令建立了数据卷,在当前机器上运行自然正常,因为目录是存在的。若要把容器发布给他人使用,一旦他人机器上没有个目录,则会出现移植性的问题。
- 我们使用dockerFile解决问题,首先新建dockerFile文件
图片上的命令等价于docker run -it -v /host1:dataVolumeContainer1 -v /host2:/dataVolumeContainer2 centos
,当然了这样的两个-v写法是不允许的,不过可以体会到编写这样的dockerFile文件所产生的效果。 - build一个新镜像,run就行了