1. docker安装
-
删除旧版本
-
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
-
下载依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
-
配置仓库源
仓库源目录:/etc/yum.repos.d/*.repoyum-config-manager \ --add-repo \ https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
-
安装docker
yum install docker-ce docker-ce-cli containerd.io
-
开启docker服务
systemctl enable docker systemctl start docker
2. 镜像
-
【下载镜像】
docker search name # 搜索对应镜像 docker pull name # 下载对应镜像,默认最新版本,也可以在添加版本,如centos:7.4.1804
-
【查看镜像】
docker image ls # 查看已下载镜像 docker image inspect centos:latest/image_id # 查询对应image的详细
-
【镜像的导入/导出】
docker image save nginx > nginx.tar.gz # 将镜像导出到文件 docker image load -i nginx.tar.gz # 从文件导入镜像
-
【镜像删除】
docker image rm image_id # 删除镜像 -f 强制删除,解决依赖 docker image rm `docker image ls -q` # 删除所有镜像
-
【镜像命名】
docker image tage image_id haha:v1.0 # 命名并且命名版本号 (如果已经有标签会生成一个新的快捷方式)
3. 容器
-
【容器的运行】
docker run -it nginx /bin/bash # 使用对应镜像启动容器(镜像名称看需要带版本) -i # 交互式操作 -t # 终端模式 /bin/bash # 进入容器执行的命令 -d # 后台运行 --name haha # 给容器命名 --rm image_id # 在退出容器的同时删除容器(用于测试环境) -p 8080:80 # 端口映射(将主机8080端口映射到容器80端口) -v /opt/html:/usr/share/nginx/html # 文件映射(主机文件—>容器目录) docker start container_id # 启动对应容器 docker restart container_id # 重新启动一个容器
-
【查看容器】
docker container ls -a # 查看所有容器 docker container inspect container_id # 查看容器详细
-
【容器的停止】
exit # 在对应终端停止对应容器 docker stop container_id # 停止对应容器
-
【进入容器】
docker exec -it container_id /bin/bash # 进入容器(子进程),退出容器时不会关闭容器 docker attach container_id # 进入容器(主进程),退出容器时会关闭容器
-
【让交互式容器放到后台】
ctrl + p q
-
【容器的网络映射】
-p 8080:80 # (将主机8080端口映射到容器地址80端口) -p 10.0.0.1:8080:80 # (将主机10.0.0.1:8080映射到容器地址80端口) -p 80 #(将主机的一随机端口映射到地址80端口) -p 10.0.0.1::80 # (将主机10.0.0.1的某一端口映射到容器地址80端口) -p 8080:80/udp # (udp协议,将主机8080端口映射到容器地址80端口)
-
【其他命令】
docker container top container_id # 查看对应容器的进程 docker container logs container_id # 查看对应容器日志 -t # 时间排序 -f # 显示时间戳 -tail 10 # 显示最后10条
4. 数据卷使用
手工交互数据:
docker container cp a.txt container_id:/etc/ # 拷贝文件到容器某位置(反过来也行)
数据卷Volume: (文件映射主机文件—>容器目录)
docker run -d -p 80:80 -v /opt/html:/usr/share/nginx/html nginx # (文件映射 )
【数据卷容器】
当拥有数个需要添加数据卷的服务启动时,一个个映射太过繁琐,通过新建一个中间的数据卷容器,可以在用户启动其他容器时省去了数据卷的映射。
① 在宿主机创建目录
mkdir -p /opt/Volume/a
② 启动数据卷容器(用一个centos镜像做数据卷容器)
docker run -it --name “nginx_volumes” -v /opt/Volume/a:/opt/a centos:7.4 /bin/bash
ctrl p q
③ 使用数据卷容器
docker run -d -p 8080:80 --volumes-from nginx-volumes --name “http” nginx