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 镜像名

将文件恢复成镜像的命令

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只有一条生效

你可能感兴趣的:(ubuntu)