docker
一、安装启动docker
#先卸载旧docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 升级 yum
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
#安装docker
yum install docker-ce docker-ce-cli containerd.io
#启动docker 服务
systemctl start docker
二、镜像命令
-
docker images
:查看docker 镜像- -q:只显示id
- -a:显示全部镜像信息
-
docker search 镜像名
:dockerhub上搜索镜像 -
docker pull 镜像[:tag]
:去dockerhub上拉取镜像,拉取的镜像必须存在。tag如果不指定就默认下载最新的 -
docker rmi 镜像id
:删除镜像docker rmi $(docker images -q)
:删除所有容器
-
docker commit -a-"作者" -m="提交内容" 容器id 新镜像名字:tag
:将修改后的容器提交到本地仓库,下次可以直接使用该镜像
三、容器命令
-
docker ps
:列出所有正在运行的容器- -a:列出所有正在运行的容器+历史运行过的容器
- -n=5:显示最近创建过的容器,数字代表显示几条
- -q:只显示容器的编号
-
docker run [可选参数] image /bin/bash
:新建容器并且启动- -d:后台方式运行
- -it:交互模式运行
- -p: linux端口号:docker容器的端口:指定端口号(8080:8080)
- –name:给容器起名字
-
exit
:停止并且退出容器返回主机 -
ctrl+p+q
:不停止并且退出容器返回主机 -
docker exec -it 容器id /bin/bash
:新建窗口进入容器 -
docker rm 容器id
:删除容器,但是不能删除正在运行的容器docker rm $(docker ps -a -q)
:删除所有容器
-
docker start 容器id
:开启容器 -
docker restart 容器id
:重启容器 -
docker stop/kill 容器id
:停止/杀死容器docker stop $(docker ps -a -q)
:停止所有容器
-
docker logs --tail 容器id
:查看容器日志 -
docker cp 容器id:文件路径 要拷贝到路径
: 拷贝容器中的文件到linux上 -
docker inspect 容器id
:查看容器详情信息
四、数据卷技术
4.1 数据卷挂载
docker run -it -v /本地linux路径:/容器中的路径 镜像 /bin/bash
:指定路径挂载
-
docker run -it -v /容器中的路径 镜像 /bin/bash
:不指定路径挂载,匿名挂载 -
docker run -it -v 文件名:/容器中的路径 镜像 /bin/bash
:不指定路径挂载,具名挂载所有docker容器的内卷,没有制定目录的情况下都会在 /var/lib/docker/volumes/随机文件命名/_data
-
docker run -it -v /容器中的路径:ro/rw 镜像 /bin/bash
ro(代表只读)或者rw(可读可写,不设置默认是rw)设置容器权限,只要设置了权限说明这个路径只能通过Linux来操作,容器是无法操作的
4.2 数据卷容器
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD --name mysql02 -- volumes-form mysql01
:容器之间的挂载,数据卷的生命周期一直持续到没有容器使用为止。
4.2 查看数据卷
-
docker volume list
:查看Linux中所有数据卷 -
docker volume inspect 容器id
:查看某一个容器数据卷挂载信息
五、dockerfile
5.1 制作镜像
FROM # 基础镜像
MAINTAINER #镜像维护者信息
RUN #构建容器时需要运行的命令
WORKDIR #进入容器后所在目录
VOLUME #数据卷挂在
EXPOSE #暴露端口
CMD #指定这个容器启动时候需要运行的命令,只有最后一个CMD会生效,会被替代。多个命令用&拼接
EXTRYPOINT #指定这个容器启动时候需要运行的命令,不会被替代,可以被追加
ONBUILD #
COPY #构建文件时可以将Linux文件复制到docker镜像中
ENV #设置环境变量 key values格式
5.2 构建镜像
docker build -f dockerfile文件路劲 -t 镜像名:[tag] .
5.3 发布镜像
-
上docker官网创建账号
-
docker login -u 账号
:登录 -
docker push 作者名/镜像id 版本号
:发布
六、docker0
容器和容器之间能互联是因为它们在同一个网络(docker0)下,但是docker0网络有一个缺陷就是不能使用域名代替ip地址,所有需要使用自定义网络。
-
docker network ls
:查看所有docker网络 -
docker network inspect 网络id/网络名字
` :查看某一个具体的网络信息 -
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
:创建自定义网络 -
docker run -d -P --name my-tomcat --net mynet tomcat
:使用自定义网络,开启容器一般情况下不指定网络默认使用docker0
-
docker network connect mynet tomcat01
:不同的网络中容器项目连接