## CentOS7安装docker
作者QQ:67065435 QQ群:821635552
本站内容全部为作者原创,转载请注明出处!
docker安装
docker安装前的准备
# 查看内核版本 uname -r # 移除旧版本docker yum remove docker \ docker-ce \ docker-common \ docker-logrotate \ docker-client \ docker-client-latest \ docker-latest \ docker-latest-logrotate \ docker-engine \ docker-selinux \ docker-engine-selinux \ -y # 安装依赖 yum install -y lvm2 yum-utils device-mapper-persistent-data # 添加docker源,更新yum缓存 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast
docker安装
yum install -y docker-ce
docker换源并更换存储路径
mkdir /data mkdir /data/docker vim /etc/docker/daemon.json { "registry-mirrors": [ "https://pee6w651.mirror.aliyuncs.com", "https://y0qd3iq.mirror.aliyuncs.com", "https://registry.docker-cn.com", "http://hub-mirror.c.163.com" ], "graph": "/data/docker" } ESC :wq
网易云无法启动docker问题
# Ubuntu & Debian sudo apt-get install bridge-utils -y sudo brctl show sudo brctl addbr docker0 sudo ifconfig docker0 172.17.0.1/16 sudo ifconfig docker0 up sudo systemctl start docker # CentOS yum install bridge-utils -y brctl show brctl addbr docker0 ifconfig docker0 172.17.0.1/16 ifconfig docker0 up systemctl start docker # 原文链接 https://www.163yun.com/help/documents/56874253316968448
docker启动停止
# 启动docker systemctl start docker # 重启docker systemctl restart docker # 停止docker systemctl stop docker # 开机运行docker systemctl enable docker # 开机不运行docker systemctl disable docker
docker卸载
docker停止
systemctl stop docker systemctl disable docker
docker移除
yum remove docker-ce
docker目录移除
rm -rf /data/docker
docker常用命令
docker登录/退出
# 登录 docker login -u [用户名] -p [密码] [仓库地址(不声明则取默认)] # 退出 docker logout [仓库地址(不声明则取默认)]
docker镜像管理
# docker镜像列表 docker images # docker下载镜像(没有TAG版本则取latest版本) docker pull [镜像名称]:[TAG版本] # docker下载镜像(所有版本,无需指定TAG版本) docker pull [镜像名称] -a # docker删除镜像(要先停止并删除镜像生成的所有容器) docker rmi [镜像id/镜像名称/镜像名称:TAG版本]
docker容器管理
# docker通过镜像运行一个容器(可以忽略TAG版本,则docker取latest版本) docker run -dit \ -p [服务器端口]:[docker端口] \ -p [服务器端口]:[docker端口] \ -v [主机目录]:[容器目录] \ -v [主机目录]:[容器目录] \ --name=[自定义容器名称] \ --privileged=true [镜像名称]:[TAG版本] # docker通过镜像创建一个容器(用法同run,只是创建后容器不会运行) docker create -dit \ -p [服务器端口]:[docker端口] \ -p [服务器端口]:[docker端口] \ -v [主机目录]:[容器目录] \ -v [主机目录]:[容器目录] \ --name=[自定义容器名称] \ --privileged=true [镜像名称]:[TAG版本] # docker进入容器 docker exec -it [容器id/容器名称] bash # docker查看运行容器 docker ps # docker查看所有容器 docker ps -a # docker停止容器 docker stop [容器id/容器名称] # docker移除容器(要先停止容器) docker rm [容器id/容器名称] # docker杀死容器 docker kill [容器id/容器名称] # docker启动容器 docker start [容器id/容器名称] # docker重启容器 docker restart [容器id/容器名称] # docker暂停容器中进程 docker pause [容器id/容器名称] # docker恢复容器中进程 docker unpause [容器id/容器名称] # docker查看容器进程 docker top [容器id/容器名称] # docker连接到容器 docker attach [容器id/容器名称] # docker查看容器端口 docker port [容器id/容器名称] # docker查看容器日志 docker logs [容器id/容器名称] # docker查看容器进程 docker top [容器id/容器名称] # docker查看容器信息 docker inspect [容器id/容器名称] # docker实时事件查看 docker events \ -f 'image'=[镜像id/镜像名称] \ -f 'container'=[容器id/容器名称] \ --since=[十位秒数时间戳/日期YYYY-MM-DD] \ --until=[十位秒数时间戳/日期YYYY-MM-DD] # 参数说明 -f 事件通过条件过滤 --since 事件通过开始时间过滤 --until 事件通过结束时间过滤
docker run --net的理解
Net的理解
# 查看现有网络 docker network ls # 创建新的网络 docker network create --driver=bridge --subnet=10.173.0.0/16 --gateway=10.173.0.1 network1 # 查看现有网络 docker network ls # 创建容器并使用该网络 docker run -dit -privileged=true --net=network1 --ip=10.173.0.2 --name=lnmp 2233466866/lnmp # 以上操作创建了一个网络并在该网络启动了一个IP固定为10.173.0.2的容器 # 容器之间想进行通信,首先应当保证要进行通信的多个容器都在同一个网络下
docker run --link的理解
Link的理解
# 1. 下载redis镜像 docker pull redis:latest # 2. 通过redis镜像运行一个redis容器 docker run -dit --name=redis redis:latest # 3. 下载lnmp镜像 docker pull 2233466866/lnmp:latest # 4. 通过lnmp镜像运行一个lnmp容器并link到redis docker run -dit \ -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ --privileged=true \ --link=redis \ --name=lnmp \ 2233466866/lnmp # 5. 进入lnmp容器 docker exec -it lnmp bash # 6. 创建一个php文件 vim test.php <?php $redis = new Redis(); //'connect'方法的host地址能写'redis'是因为上文中有'--link=redis',相当于'link'为连进来的'redis'容器做了虚拟域名映射'172.17.x.x redis' $redis->connect('redis', 6379); $redis->set('a', '123'); echo $redis->get('a'); ESC :wq # 7. 运行php文件 php test.php # 8. 可以看到运行结果输出了123
docker修改容器启动参数
这里只是以端口映射参数进行说明,实际操作中还可以修改IP、挂载等所有启动参数
docker修改容器端口映射(Linux系统)
# 获取[容器列表] docker ps -a # 获取[文件系统]的[graph] # 如果有返回结果,则[文件系统]的[graph]为返回的结果 # 如果没有返回结果,则[文件系统]的[graph]为/var/lib/docker cat /etc/docker/daemon.json|grep graph # 关闭docker systemctl stop docker # 通过[容器列表]中的[CONTAINER ID]、[文件系统]的[graph]定位容器配置文件路径,并修改配置文件(示例:将80端口映射到8888) vim [graph]/containers/[CONTAINER ID]**************/hostconfig.json "PortBindings": { "80/tcp": [ { "HostIp": "", "HostPort": "8888" } ] } ESC :wq # 启动docker systemctl start docker # 启动容器 docker start [CONTAINER ID]