Docker入门操作

参考 :Docker 从入门到实践
https://vuepress.mirror.docker-practice.com

1 准备工作

1.1安装yum工具
sudo yum install -y yum-utils 
1.2设置 yum 仓库地址
sudo yum-config-manager \
     --add-repo \
     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.3 更新 yum 缓存
sudo yum makecache fast
1.4 安装新版 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io

sudo 为管理员启动

2 docker启动

2.1 启动和重启
systemctl start docker
systemctl  restart docker
2.2 开机自启
systemctl enable docker
2.3 取消开机自启
systemctl disable docker

3 docker镜像操作

3.1 拉取镜像

命令格式为:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

docker pull centos:7

默认仓库地址从Docker Hub (docker.io)获取镜像

3.2 查看镜像
docker images
3.3 运行镜像
docker run -it --rm centos:7  bash

参数说明:
-it:这是两个参数,-i:交互式操作,-t是终端。这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
--rm:表示容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,这里只随便执行个命令,看看结果,不需要排障和保留结果,使用 --rm 可以避免浪费空间
centos:7:运行镜像名,可以用image id 替代
bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell

3.4 删除镜像
docker image rm centos  可以是镜像名也可以是image id 短前缀

也可以配合查找命令实行批量删除

如删除所有仓库命为redis的镜像
docker image rm $(docker image ls -q redis)
3.5 Dockerfile 定制镜像

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

3.5.1 编写dockersfile文件

eg :构建一个jdk8的镜像

FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
    PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
CMD ['bash']
3.5.2 docker build
docker build -t jdk:8 . 

命令需要在在 Dockerfile 文件所在目录执行

4 docker容器操作

3.1 docker run

开启容器

docker run hello-world 
Hello world

当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从 registry 下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  • 从地址池配置一个 ip 地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

后台运行

docker run -dit centos:7

-d 后台运行容器,此时容器会在后台运行,如需查看日志可以用 docker logs 查看。

3.2 docker ps

查看容器

#1.查看当前运行容器
docker ps  

#2. 查看所有容器
docker ps -a 
# 或者
docker container ls -a
3.3 docker exec

进入指定容器(容器需运行状态)

docker exec -it redis  bash 

如从宿主机进入了启动的容器,退出容器需要使用exit指令

3.4 docker container rm

容器在停止状态,可执行删除操作,例如:

docker container rm redis

如果删除运行中的容器,需要添加 -f 参数。

批量删除所有终止状态容器,例如

docker container prune

5 docker数据管理

docker中管理数据主要有两种方式:

  1. 数据卷(Volumes)

  2. 挂载主机目录 (Bind mounts) 格式: docker run –v 宿主机目录:容器目录

5.1 数据卷

数据卷是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用,默认会一直存在,即使容器被删除。

  1. 创建数据卷
 docker volume create my-vol
  1. 查看数据卷
docker volume ls
  1. 检查数据卷信息
docker volume inspect my-vol
# 执行结果
[
    {
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
        "Name": "my-vol",
        "Options": {},
        "Scope": "local"
    }
]
  1. 启动挂在数据卷容器
docker run -it --mount source=my-vol,target=/root centos:7 bash
#或者
docker run -it -v my-vol:/root centos:7 bash

-v my-vol:/root 把数据卷 container-vol 挂载到容器的 /root 目录

  1. 删除数据卷(如果数据卷被容器使用则无法删除)
docker volume rm my-vol

# 批量删除无主的数据卷
docker volume prune
5.2 挂载主机目录
docker run -it -v /usr/app:/opt/app centos:7 bash
#或者
docker run -it 
--mount type bind,source=/usr/appp  target =/opt/app centos:7 bash
#指定为只读
#--mount type bind,source=/usr/appp  target =/opt/app,readonly centos:7 bash

  1. /usr/app:为宿主机目录
  2. /opt/app: 为启动容器的一个目录
  3. -v用于指定挂载目录,如果本地目录(宿主机目录)不存在, Docker 会自动为你按照挂载目录进行目录的创建。
  4. Docker 挂载主机目录的默认权限是 读写,用户也可以通过增加 readonly指定为 只读

6 docker其他常用指令

  • -p:指定端口映射 格式: -p hostPort:containerPort如:-p 80:80 则为本地80端口映射容器80端口
  • docker logs xxx :查看日志 xxx为容器名 或者短ID
  • exec:在运行的容器内执行命令 eg: docker exec -it redis01 bash
  • stop:终止一个运行中的容器;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值