Docker的安装与基本操作

Docker

镜像:将应用程序及其依赖、环境、配置打包在一起

容器:镜像运行起来就是容器,一个镜像可以运行多个容器

Docker结构:

服务端:接受命令或远程请求,操作镜像或容器

客户端:发送命令或者请求到Docker服务端

DockerHub:

一个镜像托管的服务器

安装Docker

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。

Docker CE 分为 stable testnightly 三个更新频道。

官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。

CentOS7安装Docker

Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。

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

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

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

然后更新本地镜像源:

# 设置docker镜像源
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

然后输入命令:

yum install -y docker-ce

docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

1.3.启动docker

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

启动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官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
依次执行下面的命令

sudo mkdir -p /etc/docker 

sudo tee /etc/docker/daemon.json <<-'EOF' 
{  "registry-mirrors": ["https://p7oyte55.mirror.aliyuncs.com"] 
} 
EOF

sudo systemctl daemon-reload 
sudo systemctl restart docker

Docker基本操作-镜像

案例;从DockerHub中拉去一个nginx镜像并查看

1.首先去镜像仓库搜索nginx镜像https://hub.docker.com/_/registry

2.根据查看到的镜像名称,拉去自己需要的镜像

docker pull nginx:版本号

image-20220814101712315

3.通过命令docker images查看拉去到的镜像

案例:利用docker save将nginx镜像导出磁盘,然后通过load加载回来

docker save -o nginx.tar nginx:latest

image-20220814102149330

docker rmi nginx:latest 删除镜像

docker load -i nginx.tar加载 tar文件

Docker基本操作-容器相关命令

docker pause 暂停

docker unpause 恢复

docker stop 停止

docker start 运行

docker ps -a 查看所有容器及运行状态(-a 包括停止运行的容器)

docker logs -f 容器名 查看容器的日志,-f持续跟踪日志

docker exec 进入容器执行命令

docker rm 删除指定容器(-f 强制删除运行中的容器)

创建运行一个Nginx容器

docker run --name mn -p 8080:80 nginx

命令解读:docker run:创建并运行一个容器

​ --name:给容器起一个名字some-nginx

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

​ -d:后台运行

​ nginx:镜像名称不写版本,默认最新版本

image-20220814104605229

访问nginx

进入Nginx容器,修改HTML文件

docker exec -it mn bash

命令解读

  • docker exec:进入容器内部,执行一个命令
  • -it:给当前要进入的容器创建一个标准输入、输出终端,允许我们与容器交互
  • mn:容器的名称
  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

image-20220814110153804

查看html文件中的index.html

image-20220814142309093

不能使用vim

sed -i 's#Welcome to nginx!#Hello#g' index.html

sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html

image-20220814142718155

输入exit退出容器内部

输入docker stop -名字 结束该容器

Docker启动Redis

docker run --name mr -p 6379:6379 -d redis redis-server --appendonly yes

进入Redis容器

docker exec -it mr bash

连接Redis

redis-cli

也可以直接连接

docker exec -it mr redis-cli

输入exit退出连接,在输出exit退出容器

操作数据卷

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

数据卷操作的基本语法如下:

docker volume [COMMAND]

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步操作:

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

挂载数据卷

我们在创建容器时,可以通过-v参数来挂载一个数据卷到某个容器目录

docker run --name mn -v html:/root/html -p 8080:80 nginx

-v html:/root/html:将html数据卷挂载到容器内的/root/html这个目录

案例:创建一个nginx容器,修改容器内的html目录中的index.html内容

创建一个html数据卷

挂载到/usr/share/nginx/html

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

查看数据卷所在位置

docker volume inspect html

image-20220814151726556

进入这个目录查看

image-20220814151751281

打开index.html修改

image-20220814152040817

image-20220814152204349

如果数据卷不存在,会被自动创建

案例:创建并允许一个MYSQL容器,将宿主机目录直接挂载到容器

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

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

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

实现:

1、将mysql.tar上传到tmp目录

2、导入mysq镜像docker load -i mysql.tar

3、创建目录

[root@localhost tmp]# mkdir -p mysql/data
[root@localhost tmp]# mkdir -p mysql/conf

4、上传mysql的配置文件hmy.cnf到conf目录

5、运行容器

docker run --name mysql -e MYSQL_ROOT_PASSWORD=20020630 -p 3306:3306 -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf -v /tmp/mysql/data:/var/lib/mysql -d mysql:5.7.25

之前是安装了mysql并设置了自启动

停止mysql并关闭自启动

service mysqld stop #停止

1.通过以下代码来查看MySQL服务的自启动状态

systemctl list-unit-files | grep 'mysql'

2.关闭MySQL开机自启动服务

systemctl disable mysqld

3.当我们想再开启该服务自启动时,输入以下命令即可

systemctl enable mysqld

再运行容器即可

查看data目录,所有的数据都挂载到data目录下了

image-20220814160631456

挂载nginx的数据卷

随便run一个nginx容器
docker run -p 80:80 --name nginx -d nginx:1.10

创建文件夹mydata
cd mydata
mkdir nginx

将nginx容器里面的配置复制出来

docker container cp nginx:/etc/nginx .

在这里插入图片描述

mv nginx/ conf/
mkdir nginx
mv conf/ nginx/

总用量 0
drwxr-xr-x. 3 root root 18 9月 21 18:01 nginx



创建新的nginx:

```java
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx

进入html创建index.html

hello

访问nginx

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值