Centos7安装/使用Docker

Docker简介

Docker是一个虚拟环境容器,可以将开发环境、代码、配置文件等一并打包至中,并发布和应用到Windows、Mac、Linux等任意平台上。Docker仅是打包、隔离硬件环境,是系统中的一个进程,而不是像虚拟机一样可以运行一个完整的操作系统。


镜像(Image):类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。

容器(Container):类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境,以及运行在其中的应用程序。Docker引擎利用容器来运行、隔离各个应用。

仓库(Repository):类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。


安装Docker

## 卸载旧版本,防止出现冲突问题
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

## 安装yum-utils包(提供yum-config-manager 实用程序)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2;

## 添加 docker 源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo;
## 更新源缓存
sudo yum makecache fast;

## 列出可用docker,若未能列出说明docker源有问题
yum list docker-ce --showduplicates | sort -r

## 安装 Docker-CE
sudo yum -y install docker-ce;

## 启动 Docker
sudo systemctl start docker;
## 设置开机启动
sudo systemctl enable docker

## 验证安装
## 通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community
sudo docker run hello-world


Docker常用命令

1.0> Docker服务常用命令

## 查看Docker版本信息
docker version

## 查看docker简要信息
docker -v

## 启动Docker
systemctl start docker

## 关闭docker
systemctl stop docker

## 设置开机启动
systemctl enable docker

## 重启docker服务
service docker restart

## 关闭docker服务 
service docker stop

2.0> Dockert镜像常用命令

## 列出本地所有镜像
docker images
## 从镜像仓库中拉取或者更新指定镜像
docker pull hello-world
## 删除镜像
docker rmi hello-world

3.0> Docker容器常用命令

## 从镜像新建一个容器,并在前台启动,启动后会立即终止
docker run [镜像名/镜像ID]
## 从镜像新建一个容器,并在后台持续运行
docker run  --name [可为容器指定一个名称] -d [镜像名:tag] /bin/sh -c "while true;do echo hello docker;sleep 1;done"

## 列出本机运行的容器
docker ps
## 列出本机所有的容器(包括停止和运行)
docker ps -a

## 查看容器日志, 发生错误时可以使用此命令打出日志
docker logs nginx

## 启动容器
docker start [容器ID]

## 重启容器
docker restart [容器ID]

## 停止容器
docker stop [容器ID]
## 停止所有容器
docker stop $(docker ps -aq)

## 杀死容器进程
docker kill [容器ID]

## 删除单个容器
docker rm [容器ID]
## 删除所有容器
docker rm $(docker ps -aq)

## 查看容器日志
docker logs [容器ID]

## 从主机复制文件到容器
sudo docker cp host_path containerID:container_path

## 从容器复制文件到主机
sudo docker cp containerID:container_path host_path

## 进入docker容器
docker exec -it 容器ID或名称 /bin/bash

## 退出docker容器
exit


Docker迁移/备份

1.0> 镜像的导入/导出

如下列出本地所有镜像,其中包含了镜像的名称和tag(版本):

[root@bogon ~]# docker images
REPOSITORY           TAG     IMAGE ID      CREATED        SIZE
python               latest  f48ea80eae5a  6 days ago     917MB
mysql                latest  b05128b000dd  6 days ago     516MB
hello-world          latest  d1165f221234  8 months ago   13.3kB
ohttps/ohttps-nginx  latest  0374f3a6624e  17 months ago  640MB

镜像导出

## 将指定镜像保存成 tar 归档文件
## dockerdemo.tar导出后的归档文件,dockerdemo:tag2是镜像名称和tag号
docker save -o dockerdemo.tar  dockerdemo:tag2

镜像导入

## 导入时无法对镜像进行重命令
## 若本地已存在同名镜像库,则已存在镜像将会被覆盖
docker load -i dockerdemo.tar

2.0> 容器快照的导入/导出

容器快照导出

## dockerdemo.tar是导出后的文件,a404c6c174a2是容器的ID
docker export -o dockerdemo.tar a404c6c174a2

容器快照导入

## dockerdemo.tar要导入的容器文件
## dockerdemo:imp表示导入后的镜像名称,其中imp是给导入的镜像打的tag
docker import dockerdemo.tar dockerdemo:imp

docker load 是导入镜像文件到本地镜像库;

docker import 是导入一个容器快照到本地镜像库。

两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。从容器快照文件导入时可以重新指定标签等元数据信息。

3.0> 将容器打包成镜像

将容器打包成镜像

## 注:镜像名必须要全部小写,否则将不能打包
docker commit 容器ID 镜像名称:tag

镜像导入

## 导入时无法对镜像进行重命令
## 若本地已存在同名镜像库,则已存在镜像将会被覆盖
docker load -i dockerdemo.tar


Docker网络连接

1.0> 使用镜像nginx:latest,以后台模式启动一个容器, 并将容器的80端口映射到主机随机端口。

docker run -P -d nginx:latest

2.0> 使用镜像 nginx:latest,以后台模式启动一个容器, 并将容器的 80 端口映射到主机的 80 端口, 主机的目录 /data 映射到容器的 /data。

## 宿主机端口:容器端口
docker run -p 80:80 -v /data:/data -d nginx:latest

3.0> 绑定容器的 8080 端口,并将其映射到宿主机 127.0.0.1 的 80 端口上。

## 指定tcp协议
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
## 或
## 指定udp协议
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

4.0> 查看容器绑定和映射的端口及Ip地址

docker port 44de1b0b5312(容器ID)

其它详见:https://blog.csdn.net/ithaibiantingsong/article/details/81386307


Docker网络信息

docker容器有五种网络模式:

1)bridge模式(默认),--net=bridge

容器有独立的网络命名空间,容器有独立的网卡等所有单独的网络栈;安装完docker,系统会自动添加一个供docker使用的网桥docker0,当创建一个新的容器时,容器通过DHCP获取一个与docker0同网段的IP地址,并默认连接到docker0网桥,以此实现容器与宿主机的网络互通。

2)host模式,--net=host

此模式下,容器没有自己独立的网络环境,容器直接使用宿主机的ip和端口。

3)none模式,--net=none

容器有自己独立的网络命名空间,但没有任何网络配置,需要用户自行为容器添加网卡、IP等。

4)....其它不常用

## 列出现有docker容器所使用的网络模式
docker network ls

## 查看指定docker容器所使用的网络模式
docker inspect 容器名称/容器ID | grep -i "network"

## 查看容器IP及网关配置
## docker inspect命令用于获取容器或镜像的元数据,元数据中包含了容器或镜像的所有配置,其中就包括容器IP、网关等;
docker inspect 容器名称/容器ID


Docker目录挂载

## 将主机的目录 /data 映射到容器的 /data。
docker run -v /data:/data -d nginx:latest

## 查看docker容器挂载的目录
docker inspect 容器名称或ID | grep Mounts -A 20


Docker镜像仓库

Docke命令大全

举报

© 著作权归作者所有


1