Docker安装与常用命令
Docker是什么
简介
Docker
是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,
然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,
相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
1.DockerClient客户端
2.Docker Daemon守护进程
3.Docker Image镜像
4.DockerContainer容器
起源
Docker
是 PaaS
提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。
Docker自2013年以来非常火热,无论是从 github 上的代码活跃度,还是Redhat在RHEL6.5中集成对Docker的支持, 就连 Google 的 Compute Engine 也支持 docker 在其之上运行。
Docker安装
Docker官方文档
这个时候我们可以根据自己的需求选择要安装的版本,这里以centos为例:
1.更新yum源
yum makecache fast
2.卸载旧版本
旧版本的 Docker 被称为 或 .如果已安装这些项,请将其以及关联的依赖项一起卸载。dockerdocker-engine
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
3.使用存储库安装
设置存储库
sudo yum install -y yum-utils
#下面是官方的镜像地址 这里我们使用国内阿里云的镜像地址
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
#阿里云
sudo yum-config-manager \
--add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.安装Docker引擎
安装最新版本的 Docker 引擎
sudo yum install docker-ce docker-ce-cli containerd.io
5.启动Docker
sudo systemctl start docker
6.通过运行映像验证 Docker 引擎是否已正确安装。hello-world
sudo docker run hello-world
Docker卸载
1.卸载 Docker 引擎、CLI 和容器包:
sudo yum remove docker-ce docker-ce-cli containerd.io
2.主机上的映像、容器、卷或自定义配置文件不会自动删除。删除所有映像、容器和卷:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
Docker常用命令
Docker常用命令官方地址
这里我总结了一下我常用的一些命令
Docker基本命令
设置docker开机启动
systemctl enable docker
启动docker
systemctl start docker
关闭docker
systemctl stop docker
重启docker
systemctl restart docker
查看docker 运行状态
systemctl status docker
查看docker 版本号信息
docker info #详细信息
docker version/-v #基本信息
docker 帮助命令
docker --help
Docker镜像命令
查看自己服务器中docker 镜像列表
docker images
搜索镜像
docker search 镜像名
docker search --filter=STARS=9000 mysql 搜索 STARS >9000的 mysql 镜像
拉取镜像
docker pull 镜像名
docker pull 镜像名:tag
运行镜像
docker run 镜像名
docker run 镜像名:Tag
删除镜像
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
Docker容器命令
查看正在运行容器列表
docker ps
查看所有容器列表
docker ps -a
制作一个容器
# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器 起的名字 /bin/bash 交互路径
docker run -it -d --name 要取的别名 -p 本机端口:映射端口 镜像名:Tag /bin/bash
启动容器
docker start 容器名/容器ID
停止容器
docker stop 容器名/容器ID
重启容器
docker restart 容器ID/容器名
删除容器
#删除一个容器
docker rm -f 容器名/容器ID
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
#删除全部容器
docker rm -f $(docker ps -aq)
进入容器方式一
docker exec -it 容器名/容器ID /bin/bash #进入当前容器打开一个新的的终端
进入容器方式二 —推荐使用 exec 方式
docker attach 容器名/容器ID #进入当前容器打开的终端
退出容器
#-----直接退出 未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭
exit
# 优雅提出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q
kill 容器
docker kill 容器ID/容器名
容器文件拷贝 —无论容器是否开启 都可以进行拷贝
#docker cp 容器ID/名称:文件路径 要拷贝到外部的路径 | 要拷贝到外部的路径 容器ID/名称:文件路径
#从容器内 拷出
docker cp 容器ID/名称: 容器内路径 容器外路径
#从外部 拷贝文件到容器内
docker cp 容器外路径 容器ID/名称: 容器内路径
查看容器日志
docker logs -f --tail=要查看末尾多少行 默认all 容器ID
启动容器时,使用docker run命令时 添加参数–restart=always 便表示,该容器随docker服务启动而自动启动
docker run -itd --name redis002 -p 8888:6379 --restart=always redis:5.0.5 /bin/bash
容器数据卷
Mysql数据持久化
获取镜像
docker pull mysql:5.7
运行容器,需要做数据挂载。安装mysql,需要配置密码
官方测试
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
启动我们的
#说明
-d #后台运行
-p 本机端口:容器端口 #端口映射
-v 本机地址:容器地址 #卷挂在
-e #环境配置
--name #容器名称
docker run -d -p 3310:3306
-v /home/mysql/conf:/etc/mysql/conf.d
-v /home/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123123 --name mysql01 mysql:5.7
具名挂载和匿名挂载
#如何确定是剧名挂载还是匿名挂载
-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /本机地址:容器地址 #指定路径挂载
--name #容器名称
docker run -d -p 3310:3306
-v /home/mysql/conf:/etc/mysql/conf.d
-v /home/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123123 --name mysql01 mysql:5.7
拓展
#通过 -v 容器内路径:ro rw 改变读写权限
ro readonly #只读
rw readwirte #可读可写(默认)
docker run -d -p 3310:3306
-v /home/mysql/conf:/etc/mysql/conf.d:ro mysql:5.7
docker run -d -p 3310:3306
-v /home/mysql/conf:/etc/mysql/conf.d:rw mysql:5.7
# ro 说明这个路径只能通过宿主机来操作,容器内部是无法操作!