摘要
本博文主要是介绍docker的实际的操作的命令,同时展示docker中具体的操作。docker作为容器的重要的编排工具,同时也是在面试中重要的考核标准。改工具的学习是的软件开发和软件后端的重要一个部分,为微服务的开发打下一个基础。同时后面将详细介绍的docker的原理。
一、docker的安装(linux)
1.1 使用官方安装脚本自动安装:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
1.2 通过仓库的方式进行安装
#更新 apt 包索引
sudo apt-get update
#添加 Docker 的官方 GPG 密钥:
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
#更新 apt 包索引
sudo apt-get update
#安装最新版本的 Docker Engine-Community 和 containerd ,或者转到下一步安装特定版本:
sudo apt-get install docker-ce docker-ce-cli containerd.io
#测试 Docker 是否安装成功,输入以下指令,打印出以下信息则安装成功:
sudo docker run hello-world
#删除安装包
sudo apt-get purge docker-ce
二、docker的镜像源的修改
由于docker默认的源为国外官方源,下载速度较慢,所以在学习和使用中可改为国内的镜像源,这样速度会提高狠多。
国内Docker镜像仓库名称 |
链接URL |
Docker 官方中国区 |
|
网易 |
|
中国科学技术大学 |
|
阿里云 |
3.1 辑 /etc/docker/daemon.json
vi /etc/docker/daemon.json
#添加如下网易镜像源
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
3.2 编辑/etc/sysconfig/docker
在OPTIONS变量后追加参数 --registry-mirror=镜像源地址
vi /etc/sysconfig/docker
#编辑OPTIONS,添加中国科技大学的镜像源
OPTIONS='--selinux-enabled --log-driver=journald --registry mirror=https://docker.mirrors.ustc.edu.cn'
3.3 编辑/etc/default/docker
添加DOCKER_OPTS="--registry-mirror=镜像源"
vi /etc/default/docker
#指定镜像源为阿里的镜像源
DOCKER_OPTS="--registry-mirror=https://pee6w651.mirror.aliyuncs.com"
其他:docker pull拉取镜像时也可以指定仓库下载地址
3.4 修改/etc/docker/daemon.json
如果没有先建一个即可
sudo vim /etc/docker/daemon.json
修改配置文件
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
使配置文件生效
sudo systemctl daemon-reload
重启Docker
sudo service docker restart
测试配置是否成功
docker search nginx
三、docker常用命令
3.1 docker启动与停止
#启动:
systemctl start docker
#重启docker服务
systemctl restart docker或者是sudo service docker restart
#关闭docker
docker service docker stop或者是docker systemctl stop docker
#启动docker镜像
docker start 应用名称
#设置开机启动
sudo systemctl enable docker
#查看docker状态
sudo systemctl status docker
#查看docker内容器的运行状态
sudo docker stats
#查看docker概要信息
sudo docker info
#查看docker 帮助文档
sudo docker --help
3.2 镜像的管理命令
# 查看镜像
docker images
# 搜索镜像
docker search 镜像名称
# 拉取镜像
docker pull 镜像名称
# 删除单个镜像
docker rmi 镜像ID
# 删除多个镜像
docker rmi 镜像ID 镜像ID 镜像ID
3.3 容器的管理命令
# 查看正在运行的容器
docker ps
# 查看停止的容器
docker ps -f status=exited
# 查看所有容器(包括运行和停止)。
docker ps -a
# 创建与启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-i:表示运行容器;
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端;
--name:为创建的容器命名;
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个 -v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上;
-d:在 run 后面加上 -d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加 -i -t 两个参数,创建容器后就会自动进容器里);
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个 -p 做多个端口映射。
-P:随机使用宿主机的可用端口与容器内暴露的端口映射。
# 创建并进入容器
docker run -it --name 容器名称 镜像名称:标签 /bin/bash
# 退出当前容器
exit
# 守护式方式创建容器
docker run -di --name 容器名称 镜像名称:标签
# 登录守护式容器方式
docker exec -it 容器名称|容器ID /bin/bash
# 停止容器
docker stop 容器名称|容器ID
# 启动容器
docker start 容器名称|容器ID
# 文件拷贝
docker cp 需要拷贝的文件或目录 容器名称:容器目录
# 也可以将文件从容器内拷贝出来。
docker cp 容器名称:容器目录 需要拷贝的文件或目录
# 目录挂载(容器数据卷操作)
docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# 多目录挂载
docker run -di -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名
# 匿名挂载
docker run -di -v /usr/local/data --name centos7-02 centos:7
# 查看 volume 数据卷信息
docker volume ls
# 匿名挂载
docker run -di -v docker_centos_data:/usr/local/data --name centos7-03 centos:7
# 查看 volume 数据卷信息
docker volume ls
# 指定目录挂载
docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# 多目录挂载
docker run -di -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名
# 只读。只能通过修改宿主机内容实现对容器的数据管理。
docker run -it -v /宿主机目录:/容器目录:ro 镜像名
# 读写,默认。宿主机和容器可以双向操作数据。
docker run -it -v /宿主机目录:/容器目录:rw 镜像名
# 查看容器 IP 地址
docker inspect 容器名称|容器ID
#删除容器
# 删除指定容器
docker rm 容器名称|容器ID
# 删除多个容器
docker rm 容器名称|容器ID 容器名称|容器ID
四、镜像的备份与恢复迁移命令
# docker save 将指定镜像保存成 tar 归档文件。
docker save [OPTIONS] IMAGE [IMAGE...]
docker save -o /root/mycentos7.tar mycentos:7
# 使用 docker load 导入 docker save 命令导出的镜像归档文件。
docker load [OPTIONS]
docker load -i mycentos7.tar
# 镜像迁移
镜像迁移同时涉及到了上面两个操作,备份和恢复。 我们可以将任何一个 Docker 镜像从一台机器迁移到另一台机器。在迁移过程中,首先我们要把容器构建为 Docker 镜像。然后, 该 Docker 镜像被作为 tar 包文件保存到本地。此时只需要拷贝或移动该镜像到我们想要的机器上,恢复该镜像并运行容器即可。
五、Dokcer 的网络管理命令
# docker 默认网络
docker network ls
# 通过 docker network create 命令可以创建自定义网络模式,创建一个基于 bridge 网络模式的自定义网络模式 custom_network
docker network create custom_network
# 通过自定义网络模式 custom_network 创建容器:
docker run -di --name bbox05 --net custom_network busybox
# 通过 docker network connect 网络名称 容器名称 为容器连接新的网络模式
docker network connect bridge bbox05
# 通过 docker network disconnect 网络名称 容器名称 命令断开网络
docker network disconnect custom_network bbox05
# 移除网络
docker network rm custom_network
# 容器间网络通信
docker run -di --name default_bbox01 busybox
docker run -di --name default_bbox02 busybox