【Docker】Docker的说明和使用
一、Docker介绍
1、是一个开源的应用容器,基于go语言并遵从Apache2.0 协议开源。可以使开发者打包应用及依赖包到一个轻量级、可移植的容器中,后发布到流行的Linux机器上,也可以是实现虚拟化。
2、容器是完全使用沙箱机制,相互之间不会有任何接口(类似Iphone的app),更重要的是容器性能开销极低。
3、应用场景:Web应用的自动化打包和发布,自动化测试和持续集成、发布,在服务型环境中部署和调数据库或其它的后台应用,从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境
Docker 官网:https://www.docker.com
Github Docker 源码:https://github.com/docker/docker-ce
二、ubuntu安装docker
1、docker下载
1)添加源,和密钥(清华源)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
2)docker官方源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
2、安装
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
3、设置docker开机启动
sudo systemctl enable docker.service
4、用户加进docker用户组
sudo gpasswd -a your_user docker
newgrp - docker
5、修改docker存储路径
如果需要换路径的话:
docker默认会撞到系统盘里,但系统盘可能是个容量比较小的ssd。如果容器占空间较大,并且有持续增长的可能,最好把docker存储路径修改到大容量data盘的目录上。
sudo vi /usr/lib/systemd/system/docker.service
编辑docker服务配置文件,修改如下位置的配置
[Service]
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --graph /media/data1/service/docker
应用配置,重启docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
6、查看docker是否安装成功
docker --version
三、ubuntu卸载docker
1、删除docker,和安装docker时自动安装的组件
sudo apt autoremove docker docker-ce docker-engine docker.io containerd runc
dpkg -l | grep docker
sudo apt autoremove docker-ce-*
2、删除docker的相关配置&目录
sudo rm -rf /etc/systemd/system/docker.service.d
sudo rm -rf /var/lib/docker
3、 查看docker没有命令即卸载完成
docker --version
四、常用命令
https://blog.csdn.net/qq_44747572/article/details/120831629
https://blog.csdn.net/qq_44858888/article/details/124084408
- docker下载镜像(安装python):docker pull python:3.6
- 查看镜像:docker images
- 查看镜像详情:docker inspect 镜像名或镜像id
- 查看镜像历史:docker history 镜像名或镜像id
- 运行镜像文件(docker中运行python):docker run -it python:3.6 /bin/bash
- 查看Docker容器ID:docker ps -a
- 查看容器日志信息:docker container logs 802 #802为自己的容器id(一般写前三位)
- 停止运行的容器:docker container stop 802 #802为容器id
- 重新启动容器:docker container restart 802 #802为容器id
- 进入(exec)指定容器(Container):docker exec -it 802 bash #802为容器id
- 从容器(Container)中退出:exit
- 依据容器ID进行镜像制作:docker commit 容器ID new_python:3.6。如:docker commit 4a4efe8b4dd4 new_python:3.6
- 查看的镜像是否存在:docker images
- 镜像打包(导出镜像):docker save repository:TAG|gzip>镜像名。如:docker save new_python:3.6 | gzip >python_images.tar.gz
- 镜像文件导入:docker load <tar 包所在路径。如:docker load < tar /home/test/python_images.tar.gz
- 删除容器:docker container rm (-f) 容器ID #-f强制删除
- 删除镜像文件:docker image rm 镜像名称
- 删除所有的容器Id:docker rm $(docker ps -a -q)
- 删除所有的images: docker rmi $(docker images -q)
- 清理所有处于终止容器:docker container prune
注:
容器是基于镜像创建的,一般是先停止容器,删除容器,在删除镜像
五、常用安装
1、mysql
1)搜索镜像:docker search mysql(指定版本:docker search mysql:5.7)
2)将查询的镜像拉取到本地:docker pull mysql (指定版本:docker pull mysql:5.7)
3)查看镜像是否安装成功:docker images
4)容器中运行镜像:
docker run --name Dmysql5 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=****** -d mysql
5)查看当前运行的全部容器:docker ps -a
6)进入镜像:docker exec -it 容器id bash
7)登录mysql:mysql -u root -p
8)修改权限-远程授权:
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '*****';
FLUSH PRIVILEGES;
注:
aliyun-安全组需添加3306端口
2、redis
1)搜索镜像:docker search redis:6.2.6
2)拉取最新的镜像:docker pull redis(指定版本的docker pull redis:6.2.6)
3)查看下载的镜像:docker images
4)创建目录:
mkdir -p /root/myredis/conf
touch /root/myredis/conf/redis.conf
5)运行镜像:
docker run -p 6379:6379 --name myredis -v /root/myredis/conf/redis.conf:/etc/redis/redis.conf -v /root/myredis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass '*****'
-p -p 6379:6379 宿主机的端口映射到 doker 容器的端口
-v 绑定一个卷 将redis的配置文件/数据 映射到 宿主机的文件中
-d 后台运行
–appendonly yes 打开 AOF每次Redis收到更改数据集的命令(例如SET)时,它都会将其附加到 AOF。当您重新启动 Redis 时,它将重新播放 AOF 以重建状态
redis-server /etc/redis/redis.conf 启动以 /etc/redis/redis.conf 下的配置文件启动
–requirepass ‘ab123456’ 设置访问密码为*****
6)redis镜像修改密码---待
- 进入redis的容器 docker exec -it 容器ID bash
- 进入redis目录 /usr/local/bin
- 运行命令:redis-cli
- 查看现有的redis密码:config get requirepass
- 设置redis密码config set requirepass ****(****为你要设置的密码)
- 若出现(error) NOAUTH Authentication required.错误,则使用 auth 密码 来认证密码
7)查看运行的镜像:docker ps -a
8)连接redis:docker exec -it myredis redis-cli -a ab123456
9)设置redis开启自启动:docker update myredis --restart=always
六、快速删除镜像或容器
1、删除所有退出的容器:sudo docker rm $(sudo docker ps -qf status=exited)
2、删除所有的none镜像:docker images | grep none | awk '{print $3}' | xargs docker rmi