ubuntu 下 docker的简单使用
安装之前首先确认自己的ubuntu版本:
# 检查内核版本
sudo uname -a
# 存储驱动检查
sudo ls -l /sys/class/misc/device-mapper
----最低版本要求: 64 位 Ubuntu, 内核版本最低为 3.10
更新apt-get源并下载docker
# 更新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的常用命令:
-- 镜像相关:
列出当前本地的镜像
# 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 镜像名
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只有一条生效
本文借鉴与网络博客
原文:https://blog.csdn.net/weixin_42693794/article/details/84931697