1.卸载旧版本
yum remove docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.更新环境
# gcc 环境
yum install -y gcc
yum install -y gcc-c++
# 配置镜像地址
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新软件索引包 yum makecache fast
# docker-ce 社区版本, docker-ee 企业版本
yum install docker-ce docker-ce-cli containerd.io
#启动
systemctl start docker
docker run hello-world
docker就像手机里的应用商店
docker命令
学习方式:redis-tab 看到一切命令,docker --help就可以看到所有命令帮助!
基本命令
docker version查看docker版本
docker info查看docker详细信息
docker --help查看docker命令
镜像命令
docker images
docker images -a列出本地所有的镜像
docker images -q只显示镜像ID
# docker search mysql
# 可以增加搜索条件
# 列出收藏不小于 5000 的镜像
# docker search mysql --filter=stars=5000
STARS:关注度
docker search -s 30 tomcat从Docker Hub上查找关注度大于30的tomcat镜像
docker pull tomcat从Docker Hub上下载tomcat镜像。等价于:docker pull tomcat:latest
docker commit -m "提交的描述信息" -a "作者" 容器ID 要创建的目标镜像名称:[标签名]提交容器使之成为一个新的镜像。
如:docker commit -m "新的tomcat" -a "lizq" f9e29e8455a5 mytomcat:1.2
docker rmi hello-world从Docker中删除hello-world镜像
docker rmi -f hello-world从Docker中强制删除hello-world镜像
docker rmi -f hello-world nginx从Docker中强制删除hello-world镜像和nginx镜像
docker rmi -f $(docker images -p)通过docker images -p查询到的镜像ID来删除所有镜像
删除镜像
docker rmi -f 镜像id # 强制删除
docker rmi -f 镜像id 镜像id # 强制多个删除
# 删除全部
docker images -aq # 获取全部镜像的id
docker rmi -f $(docker images -aq) # 组合命令!
容器命令
1、新建并启动容器
docker run
# 常用参数
--name="MySQL" 给容器指定一个名字
-d 后台运行
-i 交互模式运行,进入容器
-t 交互模式运行,分配终端。进入容器
-P 随机暴露端口
-p 指定暴露的端口
-p 3306:3306 将容器内部的端口和内部端口做映射
# 这些镜像一般都是精简的!
[root@kuangshen ~]# docker run -it centos /bin/bash #以交互模式进入容器,
[root@8731ed2f08d1 /]# ll
bash: ll: command not found
[root@8731ed2f08d1 /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
[root@8731ed2f08d1 /]# vim
bash: vim: command not found
[root@8731ed2f08d1 /]# ifconfig
bash: ifconfig: command not found
[root@8731ed2f08d1 /]# exit # 退出容器
exit
[root@kuangshen ~]# ll
2、列出运行的容器
[root@kuangshen ~]# docker ps # 正则运行的
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@kuangshen ~]# docker ps -a # 正在运行和历史运行的都会显示!
CONTAINER ID IMAGE COMMAND CREATED STATUS
8731ed2f08d1 centos "/bin/bash" 2 minutes ago Exited (127)
3、退出容器
exit # 容器停止退出
Ctrl+P+Q # 不停止容器,退出
4、容器的启动停止
docker start # 启动
docker restart # 重启
docker stop # 停止
docker kill # 强制停止
5、删除容器
docker rm -f 容器id # 删除指定的
docker rm -f $(docker ps -qa) # 删除全部
docker run [OPTIONS] IMAGE根据镜像新建并启动容器。IMAGE是镜像ID或镜像名称
OPTIONS说明:
--name=“容器新名字”:为容器指定一个名称
-d:后台运行容器,并返回容器ID,也即启动守护式容器
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i同时使用
-P:随机端口映射
-p:指定端口映射,有以下四种格式:
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
docker ps列出当前所有正在运行的容器
docker ps -a列出所有的容器
docker ps -l列出最近创建的容器
docker ps -n 3列出最近创建的3个容器
docker ps -q只显示容器ID
docker ps --no-trunc显示当前所有正在运行的容器完整信息
exit退出并停止容器
Ctrl+p+q只退出容器,不停止容器
docker start 容器ID或容器名称启动容器
docker restart 容器ID或容器名称重新启动容器
docker stop容器ID或容器名称停止容器
docker kill 容器ID或容器名称强制停止容器
docker rm 容器ID或容器名称删除容器
docker rm -f 容器ID或容器名称强制删除容器
docker rm -f $(docker ps -a -q)删除多个容器
docker logs -f -t --since --tail 容器ID或容器名称查看容器日志
如:docker logs -f -t --since=”2018-09-10” --tail=10 f9e29e8455a5
-f : 查看实时日志
-t : 查看日志产生的日期
--since : 此参数指定了输出日志开始日期,即只输出指定日期之后的日志
--tail=10 : 查看最后的10条日志
docker top 容器ID或容器名称查看容器内运行的进程
docker inspect 容器ID或容器名称查看容器内部细节
docker attach 容器ID进到容器内
docker exec 容器ID进到容器内
docker cp 容器ID:容器内的文件路径 宿主机路径从容器内拷贝文件到宿主机.
如:docker cp f9e29e8455a5:/tmp/yum.log /root
日志查看
docker logs
# 参数
-f -t --tail 行数
# 通过日志查看
# -t 时间戳显示
# -f 刷新最新的日志
# --tail n 指定显示最后的多少行
[root@kuangshen ~]# docker logs -tf --tail 10 2b0b65a0733d
查看容器进程信息
docker top 2b0b65a0733d
# 常用的,进入正在运行的容器
# -it 创建一个新的端口,交互模式运行 会启动新的终端
[root@kuangshen ~]# docker exec -it 2b0b65a0733d /bin/bash
# 进入正在执行的终端!不会启动新的终端
[root@kuangshen ~]# docker attach 2b0b65a0733d
复制容器内的文件到宿主机上
docker cp 2b0b65a0733d:/home/f1 /home