# Docker **Repository Path**: vitality-a/docker ## Basic Information - **Project Name**: Docker - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-02-27 - **Last Updated**: 2022-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Docker ### Docker安装 ###### #1、卸载旧的版本 ```shell $ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine ``` ###### \#2、需要安装包 ```shell yum install -y yum-utils ``` ###### \#3、设置镜像地址 官方地址: ```shell yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo ``` 阿里云镜像地址(推荐): ```shell yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ``` \#更新yum软件包索引 ```shell yum makecache fast ``` ###### \#4、安装docker相关的 ``` yum install docker-ce docker-ce-cli containerd.io ``` ###### \#5、启动docker ``` systemctl start docker ``` ###### \#6、判断Docker是否启动成功 ``` docker version ``` ###### \#7、测试Docker ``` docker run hello-world ``` ###### \#8、查看镜像 ``` docker images ``` ###### #9、配置加速器 image-20220227161352127 ### Docker卸载 ###### \#1、卸载Docker相关软件包: ``` $ sudo yum remove docker-ce docker-ce-cli containerd.io ``` ###### \#2、删除所有图像,容器和卷: 原因:主机上的映像,容器,卷或自定义配置文件不会自动删除。 ``` $ sudo rm -rf /var/lib/docker ``` ### Docker常用命令 ###### #1、**帮助命令** ``` docker version #查看docker版本信息 docker info #查看docker系统信息 docker --help #查看docker帮助命令 ``` ###### #2、**查询本地已有镜像** ``` docker images -qa #一般用这个,其中q表示显示id,a显示所有 ``` ###### #3、**查询商店中相关软件** ``` docker search [软件名] eg: docker search mysql ``` ###### #4、**下载镜像** ``` docker pull 镜像名[:tag] ``` ###### #5、**删除镜像** ``` docker rmi -f 镜像id1 镜像id2 #删除多个镜像 docker rmi -f $(docker images -qa) #删除全部镜像 ``` ###### #6、**容器相关命令** **ps:我们有了镜像才能创建容器,下载一个centos镜像来学习** ``` docker pull centos ``` **新建容器并启动** ``` docker run [可选参数] image \#参数说明 --name="Name" 容器名字 -d 以后台方式运行 -it 使用交互方式运行,进入容器查看 -p(小p) 指定容器的端口 -p 主机端口:容器端口 -P(大p) 随机指定端口 --rm:用完之后立即删掉 eg: docker run -it centos /bin/bash docker run -d -it --name nginx01 -p 3304:80 nginx ``` **后台启动容器** ``` docker run -d 镜像名 #docker ps,发现centos停止了 #常见的坑,docker容器使用后台启动,就必须有一个前台进程,docker发现没有应用,就会自动停止 #解决办法,以这个命令启动:docker run -d -it centos /bin/bash ``` **列出所有正在运行的容器** ``` docker ps #没有参数查看正在运行的容器 -a 查看曾经运行过的 -n=? 显示最近创建的容器 -q 只显示容器的编号 ``` **进入当前正在运行的容器** ``` \#方式一,进入容器开启一个新终端 docker exec -it 容器id /bin/bash \#方式二,进入容器正在执行的终端 docker attach 容器id ``` **退出容器** ``` exit 直接容器停止并退出 ctrl+p+q 容器不停止退出 ``` **删除容器** ``` docker rm 容器id 删除指定的容器,容器正在运行则不能删除 docker rm -f $(docker ps -aq) 删除所有容器 docker ps -a -q|xargs docker rm 删除所有容器 ``` **启动和停止容器的操作** ``` docker start 容器id #启动容器 docker restart 容器id #重启容器 docker stop 容器id #停掉容器 docker kill 容器id #杀掉容器 ``` ###### #7、**其他命令** **查看日志** ``` docker logs -tf --tail 10 容器id -tf 显示全部的 --tail number 显示指定条数 ``` **查看容器中进程信息** ``` docker top 容器id ``` **查看镜像元数据** ``` docker inspect 容器id ``` **从容器内拷贝文件到主机上** ``` docker cp 容器id:容器内路径 目的主机路径 ``` ### 容器数据卷 ###### **#1、使用数据卷** 方式一:直接使用命令挂载 -v ``` docker run -it -v 本机目录:容器目录 镜像id /bin/bash ``` 实战:同步mysql数据** ``` #1、下载mysql [root@localhost dockerfile]# docker pull mysql:5.7 \#2、启动mysql容器 -d 后台运行 -p 端口映射 -v 卷挂载 -e 环境配置 --name 指定容器名字 [root@localhost dockerfile]# docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=admin --name mysql01 mysql:5.7 ``` **具名挂载和匿名挂载** ``` docker run -d -P --name nginx01 -v [卷名:]/etc/nginx[:ro|rw] nginx #解释:只写容器内路径,不指定本地路径,是匿名挂载,写了卷名是具名挂载, #ro表示在容器内部只读,但在外面可以修改 #rw表示可读可写 #配置文件建议rw,数据库文件建议ro docker volume ls docker volume inspect 卷名 ``` 所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volume/xxx/_data 我们可以通过具名挂载方便地找到我们的一个卷,大多数情况下使用具名挂载 \#如何确定是具名挂载还是匿名挂载,还是指定路径挂载 ``` -v 容器内路径 #匿名挂载 -v 卷名:容器内路径 #具名挂载 -v /宿主机路径:容器内路径 #指定路径挂载 ```