虚拟化容器学习----docker使用
docker 使用
遇到的问题
错误:”Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json: dial unix /var/run/docker.sock: connect: permission denied“
解决方案 一
解决方案 二
使用
docker 学习
修改镜像源:
-
直接设置
- registry-mirror 参数,仅对当前的命令有效docker run hello-world --registry-mirror=https://docker.mirrors.ustc.edu.cn
-
支持
systemctl 的系统sudo systemctl edit docker.service
生成
etc/systemd/system/docker.service.d/override.conf
覆盖默认的参数,在该文件中加入一下内容:`[Service]
ExecStart=
ExecStart=/usr/bin/docker -d -H fd:// --registry-mirror=https://docker.mirrors.ustc.edu.cn`
-
新版的
docker 推荐使用json 配置文件若是默认安装则默认为
/etc/docker/daemon.json
,在该文件中加入以下内容:{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }
推荐镜像源:
Docker 官方中国区: https://registry.docker-cn.com- 网易
: http://hub-mirror.c.163.com - 中科大
: https://docker.mirrors.ustc.edu.cn
docker images
列出本地所有的
docker 拉取容器
docker 查找容器
docker 删除容器
删除所有未运行的容器
sudo docker rm $(sudo docker ps -a -q)
删除指定容器
docker rm 容器名/ID
docker 启动容器
-i 保持和docker容器内的交互
-t 为当前容器分配一个客户端
-d 后台运行容器
--rm 当容器退出时自动移除这个容器
--name 为容器指定一个名称
-p hostPort:dockerPort将容器的端口发布到主机
-v 宿主机目录:docker容器目录 将宿主机的文件内容信息挂到容器目录下
docker 列出容器
docker ps [OPTIONS]
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
docker 关闭容器
1、
docker stop 容器ID或容器名 参数 -t:关闭容器的限时,如果超时未能关闭则用kill强制关闭,默认值10s,这个时间用于容器的自己保存状态 docker stop -t=60 容器ID或容器名
2、docker kill
docker kill 容器ID或容器名 :直接关闭容器
ps:
docker 重启
docker 进入容器
进入
docker exec -it 容器名 bash
宿主机与容器交互
在宿主机和容器之间相互
docker cp [option] LOCALPATH|- CONTAINER:PATH // 宿主机复制到容器中
docker cp [option] CONTAINER:PATH LOCALPATH // 容器中复制到宿主机中
例子:
docker cp xxx.jpg tomcat-8000:/usr/local/tomcat/webapp/ROOT
docker cp tomcat-8001:/usr/local/tomcat/webapp/ROOT/index.jsp /root
docker 查看日志
docker logs [options] 容器名称/ID
-f:查看实时日志
-t:查看日志产生的日期
-tail=n:查看最后n条日志
docker 数据卷
数据卷:是一个可供一个或多个容器使用的特殊目录(容器之间的共享数据)
创建数据卷
docker volume create 数据卷名称
查看所有数据卷
docker volume ls
docker 安装mysql
-
搜索镜像
docker search mysql
-
下载镜像
docker pull mysql:5.7
-
创建并启动
mysql 容器docker run -d --name mysql5.7-3306 -p 3306:3306 -e MYSQL_ROOT_PASSWORD='root' mysql:5.7
-
访问测试
docker exec -it mysql:5.7-3306 bash
连接
mysql 数据库:mysql -u root -p
输入数据库密码(上一步设置的)
-
授权其他机器登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
-
刷新权限
FLUSH PRIVILEGES;
Dockerfile
Dockerfile 常用命令
FROM<镜像>:[tag]
FROM<镜像>@digest[校验码]
LABLE maintainer = "作者信息<example@123.com>"
ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib
WORKDIR /usr/local/tomcat/
只能定义docker管理的卷:
VOLUME /data/mysql 运行时候会随机在宿主机的目录下生成一个卷目录
EXPOSE 80/tcp 23/udp
RUN <command>
RUN ["<executable>","<paraml>","<param2>"]
构建Dockerfile
docker build -t <名称> .
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!