docker的安装与使用

docker的安装与使用

1.安装docker

要求内核版本不低于 3.10

1.1.卸载(可选)

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

1.2安装docker

(1)首先需要大家虚拟机联网,安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

(2)然后更新本地镜像源:

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
​
yum makecache fast

(3)然后输入命令:安装docker

yum install -y docker-ce

docker-ce为社区免费版本。

1.3.启动docker

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

启动docker前,一定要关闭防火墙后!!

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

通过命令启动docker:

systemctl start docker  # 启动docker服务
​
systemctl stop docker  # 停止docker服务
​
systemctl restart docker  # 重启docker服务

然后输入命令,可以查看docker版本:

docker -v

1.4.配置镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

执行以下命令即可完成设置

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://omsgp3y7.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

以上命令来自阿里云的镜像加速文档:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

2.镜像有关命令

2.1镜像名称

  • 镜名称一般分两部分组成:[repository]:[tag]。

  • 在没有指定tag时,默认是latest,代表最新版本的镜像

如图:

代表5.7版本的MySQL镜像。

2.2镜像命令

常见的镜像操作命令如图:

拉取镜像

#去镜像仓库[DockerHub](https://hub.docker.com/)搜需要拉取的镜像,比如nginx
​
docker pull nginx

查看镜像

docker images

保存镜像到磁盘

命令格式:

docker save -o [保存的目标文件名称] [镜像名称]
​
docker save -o nginx.tar nginx:latest #导出nginx镜像到磁盘 

从磁盘导入镜像

docker rmi nginx:latest  #导入前需要先删除本地的nginx镜像
​
docker load -i nginx.tar  #从磁盘导入镜像

3.容器操作相关命令

2.1容器命令

容器操作的命令如图:

容器保护三个状态:

  • 运行:进程正常运行

  • 暂停:进程暂停,CPU不再运行,并不释放内存

  • 停止:进程终止,回收进程占用的内存、CPU等资源

其中:

  • docker run:创建并运行一个容器,处于运行状态

  • docker pause:让一个运行的容器暂停

  • docker unpause:让一个容器从暂停状态恢复运行

  • docker stop:停止一个运行的容器

  • docker start:让一个停止的容器再次运行

  • docker rm:删除一个容器

2.2创建并运行一个nginx容器

1.创建并运行nginx容器的命令
docker run \ 
--name mn \
-p 80:80 \
-d \
nginx

命令解读:

  • docker run :创建并运行一个容器

  • --name : 给容器起一个名字,比如叫做mn

  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口

  • -d:后台运行容器

  • nginx:镜像名称

2.进入容器,修改文件

需求:进入Nginx容器,修改HTML文件内容,添加“北京欢迎您”

1)进入Nginx容器

docker exec \
-it \
mn \
bash

命令解读:

  • docker exec :进入容器内部,执行一个命令

  • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互

  • mn :要进入的容器的名称

  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

2)进入nginx的HTML所在目录 /usr/share/nginx/html

容器内部会模拟一个独立的Linux文件系统,看起来如同一个linux服务器一样:

nginx的环境、配置、运行文件全部都在这个文件系统中,包括我们要修改的html文件。

查看DockerHub网站中的nginx页面,可以知道nginx的html目录位置在/usr/share/nginx/html

我们执行命令,进入该目录:

cd /usr/share/nginx/html

查看目录下文件:

3)修改index.html的内容

容器内没有vi命令,无法直接修改,我们用下面的命令来修改:

sed -i -e 's#Welcome to nginx#北京欢迎您#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html
3.访问index.html的内容

在浏览器访问自己的虚拟机地址,即可看到结果。(不知道虚拟机ip地址,可以通过命令ifconfig查看)

2.3容器查看命令

查看容器日志命令:

docker logs         #添加 -f 参数可以持续查看日志

查看容器命令

docker ps            #查看运行中的容器
​
docker ps -a         #查看所有容器,包括已经停止的

4.数据卷(容器数据管理)

4.1什么是数据卷

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。

一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。

这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了

4.2数据卷的作用

  • 将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全

比如:在之前的nginx容器案例中,修改nginx的html页面时,需要进入nginx内部。并且因为没有编辑器,修改文件也很麻烦。这就是因为容器与数据(容器内文件)耦合带来的后果。要解决这个问题,必须将数据与容器解耦,这就要用到数据卷了。

挂载数据卷之后就可以在数据卷对应的宿主机目录中修改html页面。

4.3数据卷操作命令

数据卷操作的基本语法:docker volume [COMMAND]

docker volume create        #创建一个volume
​
docker volume inspect       #显示一个或多个volume的信息
​
docker volume ls            #列出所有的volume
​
docker volume prune         #删除未使用的volume
​
docker volume rm            #删除一个或多个指定的volume

4.4如何挂载数据卷

这里以nginx容器挂载数据卷为例子

docker run \
--name mn \
-v html:/usr/share/nginx/html \
-p 80:80 \
-d \
nginx

这里的-v就是挂载数据卷的命令:

-v html:/usr/share/nginx/html   #把html数据卷挂载到nginx容器内的/usr/share/nginx/html这个目录中

4.5挂载本地目录

容器不仅仅可以挂载数据卷,也可以直接挂载到宿主机目录上

这里以MySQL容器举例:

前置准备:

1)拉取mysql镜像

2)创建目录/tmp/mysql/data

3)创建目录/tmp/mysql/conf

4)将hmy.cnf文件上传到/tmp/mysql/conf

语法

目录挂载与数据卷挂载的语法是类似的:

  • -v [宿主机目录]:[容器内目录]

  • -v [宿主机文件]:[容器内文件]

docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/date:/var/lib/mysql \
-d \
mysql:5.7.25
  • -e MYSQL_ROOT_PASSWORD=54088 #配置root账户的密码

  • -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf #挂载mysql配置目录

  • -v /tmp/mysql/date:/var/lib/mysql #挂载mysql数据目录

4.6数据卷挂载和直接挂载的区别

挂载结构:

  • 数据卷挂载模式:宿主机目录 --> 数据卷 ---> 容器内目录

  • 直接挂载模式:宿主机目录 ---> 容器内目录

语法:

  • 数据卷挂载 -v volume名称:容器内目录

  • 直接挂载 -v 宿主机目录:容器内目录

优缺点:

  • 数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找

  • 目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看

示意图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值