这里不讲Docker是什么?怎么用?既然学到了Docker,一定知道自己为什么要学习它。这里只是对学习过程中遇到的命令和常用命令进行总结!!!
Docker中文文档
Docker英文文档
Docker官网
阿里云开发者中心
我的博客
1. Docker安装(centos)
- 更新yum(推荐,非必须)
yum update
- 安装docker依赖库
$ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
- 设置稳定的存储库
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
- 安装最新版的docker
$ sudo yum install docker-ce docker-ce-cli containerd.io
- 安装指定版本的docker(可选)
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
查看docker版本$ yum list docker-ce --showduplicates | sort -r Installed Packages docker-ce.x86_64 3:19.03.4-3.el7 docker-ce-stable docker-ce.x86_64 3:19.03.4-3.el7 @docker-ce-stable docker-ce.x86_64 3:19.03.3-3.el7 docker-ce-stable docker-ce.x86_64 3:19.03.2-3.el7 docker-ce-stable docker-ce.x86_64 3:19.03.1-3.el7 docker-ce-stable docker-ce.x86_64 3:19.03.0-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.9-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.8-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.7-3.el7 docker-ce-stable docker-ce.x86_64 3:18.09.6-3.el7 docker-ce-stable
- 启动docker
$ sudo systemctl start docker
- HelloWorld
$ sudo docker run hello-world
- 更换阿里云镜像(先获取专属镜像加速链接)
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["专属镜像加速链接"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
2. 基本命令
- 帮助命令
docker version :查看docker的各项版本信息 docker info :查看docker的详细信息 docker --help :同linux的--help
- 镜像命令(部分)
1. 查看当前本地的镜像 docker images 2. 查看当前本地所有的镜像(docker中的镜像可以理解为一层层的封装,还有可能依赖于其它的镜像,使用这个可以全部查看) docker images -a 3. 只显示镜像ID docker images -q 4. 显示的所有的信息 docker images --no-trunc 5. 查找镜像 docker search [镜像名称] 6. 下载镜像(可以不指定版本号,下载的是最新版) docker pull [镜像名称:版本号] 7. 删除镜像 docker rmi [镜像名称或者ID] docker rmi -f [镜像] : 强制删除 docker rmi -f [镜像1] [镜像2]... : 删除的多个镜像 docker rmi -f $(docker images -aq) : 删除所有镜像 8. 提交新的镜像 docker commit -m="提交信息" -a="作者" [容器ID] [镜像名称]:[版本号]
- 容器命令(部分)
1. 启动容器 docker run [镜像名称或ID] docker run -it --name [镜像] : 交互模式运行容器,并且分配一个伪终端 docker run -d [镜像] : 后台运行容器(启动守护式容器) -P : 随机端口映射 -p : 指定端口映射 2. 当前正在运行的所有容器 docker ps 3. 上次运行的容器 docker ps -l 4. 之前运行的n个容器 docker ps -n 2 5. 退出容器 docker exit : 容器停止并且退出 ctrl + q + p : 只进行退出,容器继续运行 6. 启动容器 docker start [容器名称或者ID] 7. 重启容器 docker restart [容器] 8. 停止容器 docker stop [容器] 9. 强制停止容器 docker kill [容器] 10. 删除容器 docker rm [容器] docker rm -f $(docker ps -aq) 删除多个容器 docker ps -aq | xargs docler rm 删除多个容器 11. 查看容器日志 docker logs -f -t --tail [容器] -t 时间戳 -f 最新日志打印 --tail 显示多少条 12. 查看容器中运行的进程 docker top [容器] 13. 查看容器的内部细节 docker inspect [容器] 14. 进入正在运行的容器 docker exec -it [容器] bashShell : 可以实现不用进入容器但是可以对容器内部的操作 docker attach [容器] : 直接进入容器 15. 从容器内拷贝文件到到主机上(从主机到容器同理) docker cp [容器ID]:[要拷贝文件的路径] [目标主机路径]
- 容器数据卷
1. 使用命令方式添加数据卷 docker run -it -v [宿主机目录]:[容器内目录] [镜像] 2. 容器只读方式 docker run -it -v [宿主机目录]:[容器内目录]:ro [镜像] 3. 使用DockerFile添加数据卷 FROM centos ENV LOCAL /usr/local/ VOLUME ["/data1","/data2"] WORKDIR $LOCAL RUN touch newfile CMD /bin/bash 4. 构建DockerFile docker build -f [DockerFile] -t [新的镜像名称]:[TAG] [DockerFile] [路径] 如:docker build -f DockerFile -t tianqb/centos:1.1 . 5. --volumes-from : 容器间传递共享 docker run -it --name define_centos tianqb/centos:1.1 docker run -it --name 02centos --volumes-from define_centos tianqb/centos:1.1
- DockerFile体系
1. 保留关键字、 FROM : 基础镜像 FROM centos MAINTAINER : 维护者 MAINTAINER tianqb <tianqingbo@tianqb.cn> RUN : 在构建过程中需要执行的命令 RUN echo “HELLO” EXPOSE : 向外界暴露的端口 EXPOSE 80 WORKDIR : 构建完成进入到的工作目录 WORKDIR /usr/local ENV : 自定义环境变量 ENV LOCAL /usr/lcoal ADD : 将宿主的文件拷到镜像并进行解压或者自动处理URL COPY : 同ADD 但是只负责拷贝 VOLUME : 挂载容器数据卷 VOLUME ["/data1","/data2"] 指定容器启动需要执行的命令 CMD :可以拥有多个CMD 但是只有一个CMD起作用 可以被docker run命令所带的参数代替 ENTRYPOINT : 不会被替代 作用为追加 ONBUILD : 该镜像被继承时执行的动作