Docker基础操作

一.CentOS安装Docker

1. 卸载旧版本的Docker(确保环境干净)
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
2. 设置存储库
#  安装所需的软件包
$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
# 设置稳定的存储裤
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
3. 安装Docker社区版
$ sudo yum install docker-ce docker-ce-cli containerd.io
4. 启动Docker
$ sudo systemctl start docker
5. 通过运行hello-world 镜像来验证是否正确安装了Docker。
$ sudo docker run hello-world

二. Docker镜像加速

由于Docker hub使用的是国外的源,下载镜像时会非常的慢,因此可以使用DaoCloud切换Docker hub的源,来进行加速下载。
网站地址:https://www.daocloud.io/mirror#accelerator-doc

1. Linux使用方法:
在Linux命令行运行以下命令即可
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

在这里插入图片描述

2. 本质是在Docker的配置文件中加入了一下脚本命令:
vim /etc/docker/daemon.json

在这里插入图片描述

3. 设置好之后,重启Docker服务即可
systemctl restart docker

三. Docker镜像基本操作

1. 获取镜像
docker pull [选项] [docker registry地址] 仓库名:标签

[docker registry地址] :地址的格式一般是 域名:端口,默认地址是docker hub
仓库名:仓库名是两段,用户名/软件名 如果不写用户名,默认的是library,也就是官方镜像
2. 镜像文件
  • docker是把应用程序和其依赖包全部打包在image文件里,只有通过这个image镜像文件才能生成dokcer容器。
  • 一个image镜像文件可以生成多个容器实例。
3. 列出当前已有的所有镜像文件
# 列出所有的镜像文件
docker image ls  或者 docker images

在这里插入图片描述

4. 搜索Docker镜像
docker search 镜像名
比如:docker search centos
NAME :镜像名称
DESCRIPTION:镜像描述
STARS:下载次数
OFFICIAL:官方

在这里插入图片描述

5. 删除Docker镜像

注意:如果要移除本地的镜像,可以使用Docker rmi命令,在删除镜像之前先用docker rm删除依赖于这个镜像的所有容器,注意docker rmi是移除容器

docker rmi imageID
6. 导出Docker镜像
docker save 镜像名:标签 > /opt/centos.tar.gz  #导出centos镜像到本地
7. 导入docker镜像
docker load < /opt/centos.tar.gz   #导入本地镜像到docker镜像库

四. 容器的相关操作

1. 新建容器并启动
docker run centos /bin/echo "hehe"  #这跟在本地直接执行 /bin/echo'hehe'
docker run --name mydocker -it centos /bin/bash#启动一个bash终端,允许用户进行交互。

--name:给容器定义一个名称
-i:让容器的标准输入保持打开。
-t:让Docker分配一个伪终端,并绑定到容器的标准输入上
-rm : 容器退出后将其删除。也可以不指定参数,手动docker rm,使用-rm可以避免浪费空间。
/bin/bash:执行一个命令

在这里插入图片描述
在这里插入图片描述
当利用docker run来创建容器时 Docker在后台运行的标准操作

  1. 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  2. 利用镜像创建并启动一个容器
  3. 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  4. 从宿主机配置的网桥接口中桥接一个虚拟接口到容器中
  5. 从地址池配置一个ip地址给容器
  6. 执行用户指定的应用程序
  7. 执行完毕后容器被终止
2.查看容器进程
# 检查docker 容器进程
docker ps
# 检查所运行过的容器
docker ps -a

五. 后台运行Docker容器

-d 参数 : 后台运行容器,返回容器ID
# 利用-d参数后台启动一个centos,并使用shell语句 无限循环输出hello centos
docker run -d centos /bin/sh -c "while true;do echo hello centos; sleep 1;done"

# 查看正在运行的容器
docker ps 

# 查看容器内的标准输出
docker logs 容器ID

# 停止容器
docker stop 容器ID

# 启动容器
docker start 容器ID

# 删除容器 
docker rm 容器ID 

# 进入容器
docker exec -it 容器id
docker attach 容器id

在这里插入图片描述
在这里插入图片描述

六. 提交创建的自定义容器

1.我们进入交互式的centos容器中,发现没有vim命令
docker run -it centos
2.在当前容器中,安装一个vim
yum install -y vim
3.安装好vim之后,exit退出容器
exit
4.查看刚才安装好vim的容器记录
docker container ls -a
5.提交这个容器,创建新的image
docker commit 059fdea031ba chaoyu/centos-vim
6.查看镜像文件
[root@master /home]docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
chaoyu/centos-vim   latest              fd2685ae25fe        5 minutes ago       348MB

七. 外部访问容器

容器中可以运行网络应用,但是要让外部也可以访问这些应用,可以通过-p或-P参数指定端口映射

-P 参数会随机映射端口到容器开放的网络端口
docker run -d -P training/webapp python app.py

检查映射端口

# 宿主机ip:32768 映射容器的5000端口
[root@oldboy_python ~ 16:34:02]#docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
cfd632821d7a        training/webapp     "python app.py"     21 seconds ago      Up 20 seconds       0.0.0.0:32768->5000/tcp   brave_fermi

也可以通过-p参数指定映射端口

#指定服务器的9000端口,映射到容器内的5000端口
[root@oldboy_python ~ 16:46:13]#docker run -d -p 9000:5000 training/webapp python app.py
c0b5a6278d0f4f2e9b9eba8680451111d8b911b61de0c37ea64cb337aefb854e
查看指定容器的端口映射
docker port 容器ID

八. Docker常用命令

1. Docker容器信息
##查看docker容器版本
docker version
##查看docker容器信息
docker info
##查看docker容器帮助
docker --help


2.镜像操作
##列出本地images
docker images
##含中间映像层
docker images -a
##只显示镜像ID
docker images -q
##含中间映像层
docker images -qa 
##显示镜像摘要信息(DIGEST列)
docker images --digests
##显示镜像完整信息
docker images --no-trunc

##搜索仓库MySQL镜像
docker search mysql
## --filter=stars=600:只显示 starts>=600 的镜像
docker search --filter=stars=600 mysql
## --no-trunc 显示镜像完整 DESCRIPTION 描述
docker search --no-trunc mysql
## --automated :只列出 AUTOMATED=OK 的镜像
docker search  --automated mysql

##下载Redis官方最新镜像,相当于:docker pull redis:latest
docker pull redis
##下载仓库所有Redis镜像
docker pull -a redis
##下载私人仓库镜像
docker pull bitnami/redis

##单个镜像删除,相当于:docker rmi redis:latest
docker rmi redis
##强制删除(针对基于镜像有运行的容器进程)
docker rmi -f redis
##多个镜像删除,不同镜像间以空格间隔
docker rmi -f redis tomcat nginx
##删除本地全部镜像
docker rmi -f $(docker images -q)

##(1)编写dockerfile
cd /docker/dockerfile
vim mycentos
##(2)构建docker镜像
docker build -f /docker/dockerfile/mycentos -t mycentos:1.1

3.容器操作
##新建并启动容器,参数:-i  以交互模式运行容器;-t  为容器重新分配一个伪输入终端;--name  为容器指定一个名称
docker run -i -t --name mycentos
##后台启动容器,参数:-d  已守护方式启动容器
docker run -d mycentos

##启动一个或多个已经被停止的容器
docker start redis
##重启容器
docker restart redis

##top支持 ps 命令参数,格式:docker top [OPTIONS] CONTAINER [ps OPTIONS]
##列出redis容器中运行进程
docker top redis
##查看所有运行容器的进程信息
for i in  `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done

##查看redis容器日志,默认参数
docker logs rabbitmq
##查看redis容器日志,参数:-f  跟踪日志输出;-t   显示时间戳;--tail  仅列出最新N条容器日志;
docker logs -f -t --tail=20 redis
##查看容器redis从2019年05月21日后的最新10条日志。
docker logs --since="2019-05-21" --tail=10 redis

##使用run方式在创建时进入
docker run -it centos /bin/bash
##关闭容器并退出
exit
##仅退出容器,不关闭
快捷键:Ctrl + P + Q
##直接进入centos 容器启动命令的终端,不会启动新进程,多个attach连接共享容器屏幕,参数:--sig-proxy=false  确保CTRL-D或CTRL-C不会关闭容器
docker attach --sig-proxy=false centos 
##在 centos 容器中打开新的交互模式终端,可以启动新进程,参数:-i  即使没有附加也保持STDIN 打开;-t  分配一个伪终端
docker exec -i -t  centos /bin/bash
##以交互模式在容器中执行命令,结果返回到当前终端屏幕
docker exec -i -t centos ls -l /tmp
##以分离模式在容器中执行命令,程序后台运行,结果不会反馈到当前终端
docker exec -d centos  touch cache.txt

##查看正在运行的容器
docker ps
##查看正在运行的容器的ID
docker ps -q
##查看正在运行+历史运行过的容器
docker ps -a
##显示运行容器总文件大小
docker ps -s

##显示最近创建容器
docker ps -l
##显示最近创建的3个容器
docker ps -n 3
##不截断输出
docker ps --no-trunc 

##停止一个运行中的容器
docker stop redis
##杀掉一个运行中的容器
docker kill redis
##删除一个已停止的容器
docker rm redis
##删除一个运行中的容器
docker rm -f redis
##删除多个容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
## -l 移除容器间的网络连接,连接名为 db
docker rm -l db 
## -v 删除容器,并删除容器挂载的数据卷
docker rm -v redis

##基于当前redis容器创建一个新的镜像;参数:-a 提交的镜像作者;-c 使用Dockerfile指令来创建镜像;-m :提交时的说明文字;-p :在commit时,将容器暂停
docker commit -a="DeepInThought" -m="my redis" [redis容器ID]  myredis:v1.1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值