$ uname -r
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
注意:执行上述命令并不会删除docker容器及镜像,镜像及容器目录在/var/lib/docker
yum-utils:提供um-config-manager
device-mapper-persistent-data和lvm2:为devicemapper所必须
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
$ yum makecache fast
$ yum install -y docker-ce
$ mkdir -p /etc/docker
$ vim /etc/docker/daemon.json
# 修改daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
$ systemctl daemon-reload
$ systemctl restart docker
$ systemctl enable docker
# 列出所有版本
$ yum list docker-ce.x86_64 --showduplicates | sort -r
# 安装指定版本docker
$ sudo yum install docker-ce-<VERSION>
# shell一键安装
$ curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh
# 显示版本信息,不加--展示所有信息
$ docker version
Client: Docker Engine - Community
Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:21:07 2019
OS/Arch: linux/amd64
Experimental: false
...
# 展示简单信息
$ docker --version
Docker version 19.03.1, build 74b1e89
# 描述信息
$ docker info
# 帮助信息
$ docker help
# 查看logs用法
$ docker logs --help
# 查询运行日志,-f:表示滚动详细日志,-t:表示打印出时间
$ docker logs -ft 镜像id
–automated:只列出自动构建的镜像
–filter,-f:根据条件进行过滤结果
–limit:搜索结果的最大条数,默认值:25
–no-trunc:显示完整输出
–stars,-s:收藏数,默认:0
# 搜索mysql镜像
$ docker search mysql
# 搜索收藏量高于10的镜像
$ docker search -s 10 mysql
# 搜索结果只展示3条
$ docker search --limit 3 mysql
–all-tags,-a:下载所有标签的镜像,默认值:false
–disable-content-trus:忽略镜像的校验,默认值:true
默认情况下镜像后边不写标签版本号,即下载最新版本
# 下载最新版本
$ docker pull mysql
# 下载指定版本
$ docker pull mysql:8.0.17
1.登录
https://hub.docker.com/_/mysql?tab=tags
2.搜索要查找的镜像
3.点击找到的镜像,找到tags
–all,-a:列出本地所有镜像,默认值:flase
–digests:显示摘要信息,默认值:false
–filter,-f:显示满足条件的镜像
–no-trunc:显示完整镜像信息,images不截断
–quiet,-q:只显示镜像id
# 显示所有镜像,以下两个命令功能相同
$ docker images
$ docker image ls
–force,-f:强制删除
删除的镜像可以是镜像名或镜像id
# 删除镜像,可以是镜像名或镜像id
$ docker rmi -f 镜像名或镜像名
# 删除所有镜像
$ docker rmi -f $(docker images -q)
–output,-o:输出至文件
–input,-i:从文件加载
–quiet,-q:静默加载
# 导出镜像
$ docker save -o hello.tar hello-world
# 导入镜像
$ docker load -i hello.tar
批量删除名字中含有
harbor
的镜像
$ docker images|grep 'goharbor'|awk '{print $3}'|xargs docker rmi
a:作者
-m:提交的描述信息
$ docker commit -m "new hello-world" -a "milk" 0e982b0ba51d hello:1.0
-d:后台启动
-i:以交互模式运行容器
-t:分配一个伪输入终端
-P:随机端口映射
-p:指定端口映射
–name:指定别名
# 前台运行容器
$ docker run -it --name jenkins -p 8080:8080 jenkins:latest
# 后台运行容器
$ docker run -d --name jenkins -p 8080:8080 jenkins:latest
-a:列出当前所有容器
-l:显示最近创建的容器
-n:显示最近n个创建的容器
-q:只显示容器编号
–no-trunc:不截断输出
# 查询所有容器,以下两个命令功能相同
$ docker ps -a
$ docker container ls --all
exit:提容器停止并退出
ctrl+p+q:容器不停止退出
# 启动容器
$ docker start 容器id或容器名
# 重启容器
$ docker restart 容器id或容器名
# 停止容器
$ docker stop 容器id或容器名
# 强制停止容器
$ docker kill 容器id或容器名
# 删除已停止容器(删除指定容器)
$ docker rm -f 容器id或容器名
# 删除所有容器
$ docker rm -f $(docker ps -aq)
$ docker ps -aq | xargs docker rm
批量删除名字中含有
harbor
的容器
$ docker ps -a|grep 'goharbor'|awk '{print $1}'|xargs docker rm -f
-t:加入时间戳
-f:滚动打印
–tail:显示最后多秒条
$ docker logs -ft --tail 10 jenkins
# 查看容器内部运行进程
$ docker top 容器id
# 查看容器内部细节
$ docker inspect 容器id
$ docker exec -it 容器id /bin/bash
# docker cp 容器id:容器内路径 目的主机路径
$ docker cp c94324c4923e:/var/jenkins_home/1.txt /home/milk/docker/
$ docker run -d --name jenkins -p 8080:8080 -p 8010:8010 -p 50000:50000 -v /home/milk/docker/jenkins_home:/var/jenkins_home ba607c18aeb7
Dockerfile就用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本
FROM:后跟基础镜像,即以该基础镜像构造出新的镜像
MAINTAINER:指镜像创建者信息,[email protected]
RUN:指在构建镜像时,需要执行的linux命令
EXPOSE:指创建好的镜像向外暴露出的端口
WORKDIR:指镜像创建好后,进入docker镜像中的默认路径
ENV:指设置环境变量,可做变量传递
ADD:指宿主主机当前目录下的文件拷贝至镜像中,并自动解压
COPY:与ADD类似,但不能解压
VOLUME:容器卷,用于保存和持久化工作
CMD:指定容器启动时需要运行的命令,后边的命令会覆盖前一个命令,也就是说只有最后一个命令生效
ENTRYPOINT:与CMD类似,但不是覆盖,而是追加命令
ONBUILD:当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的
onbuild被触发
# 指定基础镜像
FROM centos
# 指定作者信息
MAINTAINER milk<[email protected]>
# 设置构建时需要执行的命令
RUN yum install -y vim
RUN yum install -y net-tools
# 设置环境变量
ENV MYPATH /usr/local
# 设置进入docker镜像时的默认路径
WORKDIR $MYPATH
# 对外暴露端口
EXPOSE 80
# 设置运行命令
CMD /bin/bash
2.执行build命令
# 说明-f:表示指写dockerfile文件路径,-t:指定镜像的名与版本号
$ docker build -f /home/milk/docker/dockerfile/centos_dockerfile -t mycentos:1.0 .
3.运行创建好的镜像
$ docker run -d mycentos:1.0
https://cr.console.aliyun.com/cn-hangzhou/instances/repositories
$ sudo docker login --username=[阿里云开发平台账号] registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/zycao_aliyun/my_tomcat:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/zycao_aliyun/my_tomcat:[镜像版本号]
命名空间名/镜像仓库名
$ docker pull registry.cn-hangzhou.aliyuncs.com/命名空间/镜像仓库名:版本号
https://docs.docker.com/