# 检查内核版本
sudo uname -a
# 存储驱动检查
sudo ls -l /sys/class/misc/device-mapper
----最低版本要求: 64 位 Ubuntu, 内核版本最低为 3.10。
# 更新apt-get源
$ sudo apt-get update
# 下载docker
$ sudo apt-get install docker
原始的docker hub更github一样是在国外的,国内访问会很慢,所以建议修改为国内的镜像地址,本人采用阿里云的.
阿里云镜像地址: https://dev.aliyun.com/search.html 。可以自行登录后复制
# 创建docker配置文件夹
sudo mkdir -p /etc/docker
# 执行写入仓库地址
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com(自己的阿里云仓库地址)"]
}
EOF
# 重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
可以设置开机自动启动docker:
systemctl enable docker
-- 镜像相关:
列出当前本地的镜像
# docker images [-options]
# 列出本地当前所有镜像,包括分层显示的镜像
docker images -a
# 显示镜像ID
docker images -q
# 显示所有镜像包括摘要信息
docker images --digest
搜索网络镜像:
# 查询某个镜像在docker hub上的情况
docker search 镜像名/镜像ID
# 查询在docker hub上点赞数为n以上的镜像
docker search -s n 镜像名/ID
下载镜像到本地
# 默认下载最新版本的镜像,latest
docker pull 镜像名/ID
# 下载指定版本
docker pull 镜像名/ID: 版本号/latest(最新版)
删除本地镜像
# 正在使用的镜像无法删除,可以加-f
docker rmi 镜像名/ID(:版本号)
# 强制删除本地镜像,包括正在使用的镜像
docker rmi -f 镜像名/ID(:版本号)
# 强制删除多个镜像
docker rmi -f 镜像名/ID(:版本号) 镜像名/ID(:版本号) 镜像名/ID(:版本号)
# 清除本地的镜像(删除所有本地镜像)
docker rmi -f $(docker images -qa)
-- 容器相关命令
创建和启动容器
# 以交互模式,创建运行容器实例
docker run -it --name 容器别名 镜像ID/名
查看当前运行的容器
# 列出当前正在运行的容器
docker ps
# 列出当前运行和以前所有运行过的容器
docker ps -a
# 列出上一次运行的容器
docker ps -l
# 列出上5次运行的容器
docker ps -n 5
停止退出容器的命令:
# 停止并退出容器
exit
# 退出但后台运行(不停止)容器
ctrl + p + q
# 强制杀死(停止)容器
docker kill 容器ID/名
重启容器(后台运行),不进入交互模式运行
# 停止容器
docker stop 容器ID/名
# 启动容器(不进入容器)
docker start 容器ID/名
# 重启容器(不进入容器)
docker restart 容器ID/名
删除容器
# 删除容器
docker rm 容器ID/名
# 强制删除容器,如果容器正在后台运行,立即停止并删除
docker rm -f 容器ID/名
# 清空所有的容器(删除所有容器)
# 方法一
docker rm -f $(docker ps -aq)
# 方法二
docker ps -aq | xargs docker rm
以守护进程的方式运行容器,如果开启的容器没有开启的进程(没事做)会立即自杀,如后台有进程正在运行,该容器会后台运行
docker run -d 镜像名/ID
查看容器的日志信息
docker logs -f -t --tail 容器ID/名
查看容器内部的进程信息
docker top 容器ID/名
查看容器内部细节
docker inspect 容器ID/名
进入容器交互(后台运行着的容器)
# 进入后台运行的容器(直接进入)
# 方法一
docker attach 容器ID/名
# 方法二
docker exec -it 容器ID/名 /bin/bash
# 不进入容器的情况下,在宿主机上面直接执行操作容器,并返回结果
docker exec -t 容器ID/名 pwd
将容器中的文件拷贝到本地当前目录下
docker cp 容器ID/名:/路径/文件
mysql部署命令:
docker run -di --name=容器名 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=root密码 mysql镜像名
mysql容器创建完成后可以使用指定ip连接数据库
将容器保存为镜像,可以用于迁移环境
docker commit 容器名 镜像名
将镜像保存成文件,方便迁移
docker save -o 文件名.tar 镜像名
将文件恢复成镜像的命令
docker load -i 文件名.tar
dockerfile,镜像文件的文件描述(docker编程)
自定义制作docker镜像文件,构件的镜像名为name
docker build -f dockerfile文件 -t name(创建新的镜像名)
如下简单的编写dockerfile
FROM ubuntu # 基础镜像
VOLUME ['容器内目录1', '容器内目录2'] #添加数据卷,关联共享的目录,宿主机默认,可以用docker inspect ID查看
CMD /bin/bash # 运行容器时执行的命令
dockerfile特点:
一.每条保留字指令必须大写字母,且后面至少有一个参数
二.指令从上往下执行,#表示注释
三.每条指令都会创建一个新的镜像层,并对镜像进行提交
docker的指令如下:
FROM ------------> 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER --->镜像维护者名字和邮箱(作者)
RUN---------------->容器构建时需要运行的命令
EXPOSE----------->容器启动后对外暴露的端口号
WORKDIR--------->指定在创建容器后终端默认登陆进来的工作目录
ENV------------------>用来在创建镜像过程中设置环境变量的
ADD------------------>拷贝并解压缩
COPY----------------->类似于ADD,只做拷贝
CMD------------------->指定容器启动时要运行的命令
ENTRYPOINT------->追加覆盖指令,类似于CMD,但CMD只有一条生效