目录
一.安装与部署docker
1.1 关闭防火墙
1.2 安装依赖包
1.3 设置阿里云镜像源
1.4安装docker-ce社区版
二.设置镜像加速
三.网络优化
四.docker镜像操作
4.1 搜索镜像——docker search 镜像
4.2 下载镜像——docker pull 仓库名/镜像名:标签
4.3 查看已下载镜像——docker images
4.4 查看镜像详细信息
4.5修改镜像标签
4.6删除镜像
五 .导出镜像文件和拉取本地镜像文件
5.1 导出镜像文件
5.2 拉取本地镜像文件
六 容器管理
1.创建容器
2.开启容器
3.关闭容器
(1)优雅停止
(2)强制停止
4.查看容器状态信息
5.删除容器
6.进入容器
7.复制文件
(1)从容器中复制到主机
8.创建并启动容器(替代1和2)
9.容器的导入和导出
(1)导出
(2)导入
一.安装与部署docker
1.1 关闭防火墙
#关闭防火墙并设置开机自关闭
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
1.2 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
1.3 设置阿里云镜像源
#设置阿里云镜像源
cd /etc/yum.repos.d/
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.4安装docker-ce社区版
#安装docker-ce社区版
yum install -y docker-ce
#开启docker并设置开机自启
systemctl start docker.service
systemctl enable docker.service
二.设置镜像加速
这里我们使用阿里云的镜像,加速镜像下载速度
注册阿里云账号并登录
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [镜像加速地址]
}
EOF
systemctl daemon-reload
systemctl restart docker
三.网络优化
vim /etc/sysctl.conf
net.ipv4.ip_forward=1 #开启路由转发功能
stsctl -p
systemctl restart network
systemctl restart docker
四.docker镜像操作
4.1 搜索镜像——docker search 镜像
/前面的是公有仓库的名称
如果没有则代表是默认镜像(官方镜像)
4.2 下载镜像——docker pull 仓库名/镜像名:标签
4.3 查看已下载镜像——docker images
#查看下载到本地的所有镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 19 months ago 141MB
--------------------------------------------------------------------------------
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像,经过md5方式加密过;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;
--------------------------------------------------------------------------------
4.4 查看镜像详细信息
docker inspect 镜像ID
4.5修改镜像标签
docker tag 原仓库名/原镜像名:原标签 新仓库名/新镜像名:新标签
注:修改标签后显示的镜像,不会删除原有镜像,两个镜像文件是同一个的所以ID也相同
4.6删除镜像
docker rmi 仓库名/镜像名:标签
镜像ID
删除所有镜像可以使用 docker rmi $(docker images -q)
五 .导出镜像文件和拉取本地镜像文件
5.1 导出镜像文件
docker save -o xxx.tar 仓库名/镜像名:标签 #默认导出到当前目录
5.2 拉取本地镜像文件
docker load -i xxx.tar # -i 也可以使用 < 替换
六 容器管理
1.创建容器
容器创建就是将镜像加载到容器的过程。新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。
docker create [选项] 镜像名
--name=容器名
-i 让容器开启标准输入接受用户输入命令
-t 让 Docker 分配一个伪终端 tty
-it 合起来实现和容器交互的作用,运行一个交互式会话 shell
2.开启容器
docker start 容器名或ID
3.关闭容器
分为优雅停止和强制停止,强制停止区别于优雅停止的是状态码不同,强制停止可能造成数据异常,在特点状况下使用。
(1)优雅停止
docker stop 容器名或ID
(2)强制停止
docker kill 容器名或ID
4.查看容器状态信息
docker ps #默认查看开启的容器
-a #查看所有存在的容器
-q #显示容器ID
字段名 | 含义 |
CONTAINER ID | 容器ID号 |
IMAGE | 镜像名 |
COMMAND | 启动容器执行的命令(镜像已经定义好,可以通过docker inspect镜像查看到,如果在创建容器的命令后面跟上命令,会覆盖这个默认执行的命令) |
CREATED | 创建时间(相对于现在) |
STATUS | 容器状态(创建、开启、关闭) |
PORTS | 容器映射的端口 |
NAMES | 容器名称(使用--name指定的,未指定系统会自动创建) |
5.删除容器
docker rm 容器名或ID
6.进入容器
docker exec -it 容器名或ID sh
7.复制文件
(1)从容器中复制到主机
docker cp 容器名或ID:文件路径 主机文件路径
(2)从主机复制到容器
docker cp 主机文件路径 容器名或ID:文件路径
8.创建并启动容器(替代1和2)
docker run 容器名或ID [指定命令] #等同于先执行 docker create 命令,再执行 docker start 命令,之后默认执行镜像定义的命令,也可以自己指定命令,命令执行完则退出。
-d #后台运行
注意:容器是一个与其中运行的 shell 命令/进程共存亡的终端,命令/进程运行容器运行, 命令/进程结束容器退出。
docker 容器默认会把容器内部第一个进程,也就是 pid=1 的程序作为docker容器是否正在运行的依据,如果docker容器中 pid = 1 的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉。
当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是
- 检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;
- 利用镜像创建并启动一个容器;
- 分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
- 从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;
- 分配一个地址池中的 IP 地址给容器;
- 执行用户指定的应用程序,执行完毕后容器被终止运行。
可以使用死循环使某些容器(如centos操作系统)持续运行
打开另一个终端查看,处于运行中,也能进入此包含centos操作系统的容器执行操作
但是使用死循环持续运行会占用前台,所以直接使用-d选项
9.容器的导入和导出
用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为容器快照文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。
(1)导出
docker export 容器ID/名称 > 文件名
docker export -o 容器ID/名称 文件名
(2)导入
注意:导入后会生成镜像,但不会创建容器