docker从入门到入土
卸载旧版本
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
安装 Docker 引擎、containerd 和 Docker Compose
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
启动
systemctl start docker
查看状态
systemctl status docker
配置镜像加速器
添加地址一锅端↓
vi /etc/docker/daemon.json
{ "registry-mirrors": ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc"]}
sudo systemctl daemon-reload
sudo systemctl restart docker
常用命令
运行 以nginx 为例
docker run -d 创建并运行一个容器,-d是在后台运行
–name 给容器起名,唯一
-p 18000:80 设置端口映射,docker容器里的3306映射到13306宿主机端口
-e KEY=VALUE 环境变量
nginx 指定运行的镜像名字 Repository:tag tag是版本号,没有的默认最新
docker pull 远程拉取镜像到本地
docker pull nginx
docker images 查看本地镜像
docker rmi xxx 删除本地镜像(需要先删除进程!)
docker rmi nginx
docker build 打包镜像
docker build -t 镜像名:1.0 dockerfile目录
-t是tag 给镜像起名,不指定时默认为latest
dockerfile目录 指定dockerfile所在的目录,当前目录就指定为“.”
docker save 保存镜像到本地
docker save -o nginx.tar nginx:latest
docker load 加载本地镜像
docker load -i nginx.tar
docker push 推送镜像仓库
docker stop 停止容器进程
docker start 启动容器进程
docker ps 查看进程
简化输出内容
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"
docker ps -a all,展示所有容器
docker rm 删除进程
docker rm nginx
docker exec 进入进程
docker logs nginx 查看容器进程日志
-f follow 持续跟踪
-n 200 后200行
docker exec进入容器内部
docker exec -it nginx bash -it是可交互终端,进入bash
或者不用进入bash
docker exec -it nginx nginx -s start
docker exec -it mysql mysql -uroot -p
数据卷挂载
命令
docker volume [--help]
docker run -v 数据卷:容器内目录 创建容器并将数据卷挂载到/var/lib/docker/volumes/。如果容器已经创建,无法挂载;没有的目录会自动创建
docker run -d --name nginx -p 18000:80 -v html:/usr/share/nginx/html nginx
宿主机的/data/html与容器内部/usr/share/nginx/html双向绑定
docker volume ls 查看数据卷列表
docker volume inspect
docker volume inspect html 查看数据卷
可以cd到Mountpoint 查看宿主机双向绑定的目录
docker volume rm 删除数据卷
docker volume prune 删除未使用的数据卷
本地目录挂载
首先安装一个mysql↓
docker run -d --name mysql -p 13306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456 mysql
docker inspect mysql 查看docker容器详情,此时会生成一个匿名卷,mysql的数据保存在这个地方
docker run -v 本地目录:容器内目录
本地目录必须以/或者./开头,否则会识别成数据卷
测试:安装一个mysql,挂载数据目录、配置文件、初始化脚本
docker run -d \
--name mysql \
-p 13306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/init:/docker-entrypoint-initdb.d \
-v /data/mysql/conf:/etc/mysql/conf.d \
mysql
自定义镜像
基础镜像baseimage-层layer-入口entrypoint
dockerfile 构建镜像
FROM 指定基础镜像 FROM centos:6
ENV 设置环境变量
COPY 拷贝本地文件到镜像的指定目录 COPY xxx /tmp
RUN 执行shell命令 RUN tar -zxvf /tmp/xx.tar.gz
EXPOSE 暴露端口 EXPOSE 8080
ENTRYPOINT 启动命令 ENTRYPOINT java -jar xx.jar
docker网络
docker创建虚拟网卡docker0,默认ip端172.17.0.1/16,创建的容器与虚拟网卡桥接
自定义网络
形成一个新的网桥,可以通过容器名互相访问
命令
docker network create 网络名 创建新的网桥
net1
docker network connect net1 mysql
docker run ... --network net1 ... 创建容器时直接加入网络
docker compose
快速完成多个相互关联的docker容器的部署
命令
docker compose [options] [command]
docker compose up -d
原文地址:https://blog.csdn.net/qq_38292936/article/details/144132588
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!