文件名称 | 版本号 | 作者 | 版本 | |
---|---|---|---|---|
Docker基础知识词典_持续更新。。。 | v1.0.3 | 若布与宫合 | 8416837 | Cent OS 8 Ubuntu 18 |
CentOS 7
Docker报错重装 注意:容器全丢
预备
- 检验
cat /etc/redhat-release # 查看版本
# output CentOS Linux release 7.2.1511 (Core)
uname -r
# output 3.10.0-862.el7.x86_64
docker
# output -bash: docker: command not found
安装
yum -y install docker-io
output
重点是complete
!
- 启动
systemctl enable docker
# output Created symlink /etc/systemd/system/multi-user.target.wants/docker.service, pointing to /usr/lib/systemd/system/docker.service.
systemctl start docker
# 报错 output Failed to get D-Bus connection: Operation not permitted 经过分析,因为当前虚机存在于docker,所以systemctl不可用,需要另作处理才可使用
# 解决办法
# 创建容器:
# docker run -d -name centos7 --privileged=true centos:7 /usr/sbin/init
# 进入容器:
# docker exec -it centos7 || 容器id /bin/bash
# 退出容器
exit
解决报错
解决docker启动错误 error creating overlay mount to /var/lib/docker/overlay2
https://blog.youkuaiyun.com/twj13162380953/article/details/116100297
解决删除容器时报资源繁忙
https://blog.youkuaiyun.com/ibless/article/details/81975725
高级知识
参数
接收外界参数
启动配置
修改端口
# 停止容器、停止Docker
cd /var/lib/docker/containers
# 按提示修改端口
操作
镜像
脚本
# 导出物理镜像
docker save -o qedis-v1.1.1.tar.gz qedis:v1.1.1
# 注入镜像
docker import qedis-v1.1.1.tar.gz qedis:v1.1.1
启停
systemctl stop docker
systemctl start docker
清理-慎用
# 清理容器-慎用
https://www.runoob.com/w3cnote/docker-clear-command.html
查看
网桥
brctl show
docker network ls # 正解
# 查看容器所在网桥
docker inspect id
删除
删除镜像
docker rmi 镜像id
删除网桥
状态
created:很明显基于镜像创建了容器,但是从未启动过
参数
- 意义
项 | 意义 | 说明 | 示例 |
---|---|---|---|
-e | 传递环境变量 | environment | |
-d | 在后台运行,并打印容器id | 可以出现多次 | |
-h | hostname | ||
–restart | 自启 always:自启;no:不自启; | –restart=no –restart=always | |
–net | 连接到指定网络 | --net=bridge 这个是默认值,连接到默认的网桥--net=host 告诉 Docker 不要将容器网络放到隔离的名字空间中,即不要容器化容器内的网络。此时容器使用本地主机的网络,它拥有完全的本地主机接口访问权限。容器进程可以跟主机其 它 root 进程一样可以打开低范围的端口,可以访问本地网络服务比如 D-bus,还可以让容器做一些影响整个主机系统的事情,比如重启主机。因此使用这个选项的时候要非常小心。如果进一步的使用 --privileged=true,容器会被允许直接配置主机的网络堆栈--net=container:NAME_or_ID 让 Docker 将新建容器的进程放到一个已存在容器的网络栈中,新容器进程有自己的文件系统、进程列表和资源限制,但会和已存在的容器共享 IP 地址和端口等网络资源,两者进程可以直接通过 lo 环回接口通信–net=none 让 Docker 将新容器放到隔离的网络栈中,但是不进行网络配置。之后,用户可以自己进行配置 参考文章 | |
-v | 映射数据卷 | 将宿主机目录映射到Docker Container | -v /home/conf:/data/cfg:ro(加上:ro表示在容器内只读 |
)
更新 配置
- 修改参数
docker update --restart=no 容器id
- 修改配置文件参数
传参
查看传参
测试
报错
- 进入容器报错,命令:
dockr exec -it 容器id /bin/bash
报错:
starting container process caused "exec: \"/bin/bash\": stat /bin/bash: no such file or directory": unknown
解决:
改为dockr exec -it 容器id sh
CentOS 7
安装地址 https://www.cnblogs.com/qinxu/p/10032176.html # 按这个教程安装成功了
CentOS 8 1905
- 配置国内yum源
- 安装完毕:
- hello-world
Ubuntu18.04
安装
安装
# cat /etc/issue 查看版本
sudo apt install docker.io
docker --version # 检验安装是否有效
安装截图:
版本号截图:
非root用户使用Docker
# If you would like to use Docker as a non-root user, you should now consider adding your user to the "docker" group with something like:
sudo usermod -aG docker notRootUser
# Remember that you will have to log out and back in for this to take effect!
# 当要以非root用户可以直接运行docker时,需要执行 sudo usermod -aG docker notRootUser命令,然后重新登陆,否则会报错
国内镜像
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
# 或
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
# 拷贝上文镜像地址到这个json文件
sudo gedit /etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker
sudo docker info
get info后可以看到:
查看
- 状态:
systemctl status docker
Demo
HelloWorld
# 先运行镜像,这个镜像本地不存在,且命令也不正确,权且试一下,看系统如何纠正。——系统自动下载了镜像
sudo docker run ubuntu hello world
# 执行HelloWorld
sudo docker run ubuntu /bin/echo hello world
Bingo!冇问题。
安装Go网关
常用命令
查看运行过的
sudo docker ps -a
# sudo docker start container_id 再执行一次
sudo docker start 4cf0ec150c1d # 这样执行看不到实时hello了,不过确实执行成功了
sudo docker logs 4cf0ec150c1d # 查看执行日志
执行后,out:
[zhangsan@localhost mysql]# docker start 3a8bfb748bf7
3a8bfb748bf7
Docker-Compose
- 概念
Compose恰好满足了这样的需求。它允许用户通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器为一个项目(project)。
# 下载docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose -`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# https://gitee.com/mirrors/docker-compose
sudo curl -L https://gitee.com/mirrors/docker-compose -`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 增加执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 查看版本,正常显示就安装成功
docker-compose --version
Ubuntu 18 安装Curl注意事项待续
Ubuntu安装
- 系统命令安装
# 先执行命令查看有没安装compose
docker-compose --version
没有安装,但可以根据提示安装:
执行apt install docker-compose
安装,结果失败了,输出日志↓
E: Failed to fetch http://mirrors.cloud.aliyuncs.com/ubuntu/pool/main/p/python-urllib3/python-urllib3_1.22-1ubuntu0.18.04.1
E: Failed to fetch http://mirrors.cloud.aliyuncs.com/ubuntu/pool/main/p/python-cryptography/python-cryptography_2.1.4-1ubun
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
安装失败了,再试一次,不行,那就试试安装包安装
进入compose下载页面
或下载更加新的版本
检索docker-compose
,拖到最底部
下载Linux版本,可能比较慢。高速下载docker-compose-Linux64版本1.27.2安装包
下载成功
# 进入快捷方式目录
cd /usr/local/bin
将文件拖拽到↑目录,授权:chmod +x docker-compose
# 检测是否安装成功
docker-compose --version
# or
docker-compose version
output:
docker-compose version 1.27.2, build
docker-py version: 4.3.1
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
↑说明安装成功
使用
容器 Container
挂载数据卷
# 新建数据卷容器 用于多容器共享它
docker run -it -v /someData --name storageData ubuntu
# 共享数据卷
docker run -it --volumes-from storageData --name data1 ubuntu
# 火车挂载
docker run -d --name data9--volumes-from data1 xx/XXX
# 已经运行了,如何增加文件到容器
docker cp 宿主机文件 容器id:容器某目录
# 或者reverse
docker cp 容器id:容器某目录 宿主机文件
解决报错
无权限创建目录
1、–privileged=true;
2、给宿主机目录开放权限。