先了解几个概念:

镜像 mysql 镜像

容器   mysql服务

仓库  mysql仓库

linux最小化安装时没有netstat命令 可以使用yum -y install net-tools安装

删除旧版本,如果没有可以不执行


yum remove docker \                  docker-client \                  docker-client-latest \                  docker-common \                  docker-latest \                  docker-latest-logrotate \                  docker-logrotate \                  docker-selinux \                  docker-engine-selinux \                  docker-engine


安装依赖包


yum install -y yum-utils device-mapper-persistent-data lvm2

设置yum源


yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

或者

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新缓存


yum makecache fast

安装docker CE


yum -y install docker-ce

启动后台服务


systemctl start docker

测试


docker run hello-world

因为没有hello-world 镜像所以首次运行时会自动下载一个镜像然后运行

设置国内镜像源

为了加速方位可以vi /etc/docker/daemon.json

然后加入


{ "registry-mirrors": ["https://registry.docker-cn.com"] }

然后重启docker


查看本机所有的镜像可以使用如下命令

docker images或者docker image ls

docker官方镜像站点https://hub.docker.com/

使用docker命令查找镜像  例如docker search nginx

可以列出nginx所有相关镜像

拉取镜像

docker pull nginx

运行镜像

docker run 镜像名  一般要加一些参数  以nginx为例


docker run -p 80:80 -d --name nginx_web nginx

注意:镜像名指的是仓库名称:标签名  如果只写仓库名默认是最新版本镜像 即  镜像名:latest

运行镜像会创建一个容器  后续可以使用docker stop 或者docker start 容器名    停止或者启动容器 例如

docker stop nginx_web

docker start nginx_web

查看运行中的容器


docker ps

查看所有容器


docker ps -a

宿主机容器相互拷贝文件 

从宿主机向容器拷贝文件 格式:docker cp 宿主机文件名  容器名:路径

从容器向宿主机拷贝文件 格式:docker cp   容器名:路径/文件名 宿主机路径/文件名

例如

docker cp index.html nginx8080:/usr/share/nginx/html

docker cp  nginx8080:/usr/share/nginx/html/index.html ./


删除容器 docker rm 容器名 例如


docker rm nginx_web

从容器创建镜像 docker commit -m "备注信息" 容器名称  镜像名称

例如docker commit -m "nginx的首页被改动" nginx nginx_new

备注:如果使用了数据卷挂载(-v) 则在宿主机目录中的更改不会影响容器内的文件内容,创建新镜像时仍然按原始容器内的文件内容创建

删除镜像 docker rmi 镜像名称  或者 docker image rm 镜像名称

例如docker rmi nginx_new

提示:如果通过该镜像创建了容器则需要先删除容器  如果删除容器时容器在运行则需要先停止

查看docker系统占用的所有空间  docker system df

进入容器内查看docker exec -it nginx /bin/bash

数据卷(目录映射)

可以将宿主机的某个目录映射到容器内的某个目录 操作方式


docker run -p 8080:80 -d --name nginx8080 -v /home/wwwroot/default:/usr/share/nginx/html nginx

其中 /home/wwwroot/default 是宿主机目录 /usr/share/nginx/html 是容器内的目录

支持多个目录的映射

以nginx为例

容器内的目录

/etc/nginx/nginx.conf

/etc/nginx/conf.d/default.conf

/usr/share/nginx/html/


宿主目录和容器内目录的映射关系

/usr/local/nginx81/  映射到    /etc/nginx

/home/wwwroot/default81 映射到    /usr/share/nginx/html/


先从其他容器拷贝对应的配置文件 例如


docker cp nginx8080:/etc/nginx /usr/local/nginx81/

执行如下指令

docker run -p 81:80 -d --name nginx81 \

-v /usr/local/nginx81/nginx:/etc/nginx \

-v /home/wwwroot/default81:/usr/share/nginx/html/ \

nginx