Docker使用

 Docker简介

Docker技术的三大核心概念,分别是:

镜像(Image)

容器(Container)

仓库(Repostitory)

负责对Docker镜像进行管理的,是Docker Registry服务(类似仓库管理员)

不是任何人建的任何镜像都是合法的,万一有人盖了一个有问题的房子呢?

所以,Docker Registry服务队镜像的管理是非常严格的

最常使用的Registry公开服务,是官方的Docker Hub,这也是默认的Registry,并拥有大量的高质量的官方镜像

官方地址:https://hub.docker.com/

Docker启动和安装

安装Docker

Docker官方建议在Ubuntu中安装,因为Docker是基于Unbantu发布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的,在很多版本的Centos中是不支持更新最新的一些补丁包的。

由于我们学习的环境都使用的Centos,因此这里将Docker安装到Centos上,注意:建议安装在Centos7.x以上的版本,在Centos6.x的版本中,安装前需要安装其他很多的环境,而且Docker很多补丁不支持更新。

验证Linux内核版本

Docker要求Linux的Kernel版本必须大于3.8,推荐使用3.10及更高,所以需要先验证CentOS的内核是否大于3.8。

使用uname命令验证

uname -r

 

卸载已安装的Docker

如果已经安装过Docker,请先卸载,再重新安装,来确保整体的环境是一致的。由于这个虚拟机是新创建的,所以并没有安装过Docker,但如果同学们使用已有的虚拟机,则需要按照下面的命令卸载。

使用yum卸载Docker库

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

安装yum工具包和存储驱动

yum install -y yum-utils device-mapper-persistent-data lvm2

安装Docker的yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

如果连接超时,可以使用alibaba源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker-19.03.5

yum install docker-ce docker-ce-cli containerd.io

启动docker

sudo service docker start

设置开机启动

systemctl enable docker

将指定用户添加到用户组

usermod -aG docker root

退出,然后重新登录,以便让权限生效。

 

安装后查看Docker版本

docker version

Docker的启动和停止

操作

指令

启动docker

systemctl start docker

停止docker

systemctl stop docker

重启docker

systemctl restart docker

查看docker状态

systemctl status docker

开机启动

systemctl enable docker

查看docker概要信息

docker info

查看docker帮助文档

docker --help

配置阿里云镜像加速

操作步骤:

操作步骤

说明

1

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决

https://help.aliyun.com/product/60716.html

2

注册一个属于自己的阿里云账户(可复用淘宝账号)

登陆阿里云开发者平台

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

获取加速器地址

3

配置本机Docker运行镜像加速器

阿里云的本人自己账号的镜像地址(需要自己注册有一个属于你自己的):   https://xxxx.mirror.aliyuncs.com

vim /etc/docker/daemon.json

4

重启daemon服务

systemctl daemon-reload

5

重启Docker服务

systemctl restart docker

6

Linux 系统下配置完加速器需要检查是否生效

systemctl status docker

 

Docker常用命令

帮助命令

操作

指令

查看Docker版本

docker version

查看docker概要信息

docker info

查看docker帮助文档

docker --help

镜像指令

搜索镜像 

docker search 镜像名字 

拉取镜像

docker pull 镜像名字

查看镜像

docker images

删除单个镜像 

docker rmi  -f 镜像ID

删除多个镜像

docker rmi -f 镜像名1:TAG 镜像名2:TAG

删除全部

docker rmi -f $(docker images -qa)

 容器指令

 查看容器

l 查看正在运行的容器

docker ps

l 查看所有容器

docker ps -a

l 查看最后一次运行的容器

docker ps -l

l 查看停止的容器

docker ps -f status=exited

创建与启动容器

创建容器常用的参数说明

l 创建容器的命令:

docker run

l OPTIONS说明(常用):有些是一个减号,有些是两个减号

--name="容器新名字": 为容器指定一个名称;

-d: run后面加上参数-d,会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i-t两个参数,创建后会自动进入容器),并返回容器ID,也即启动守护式容器;

-i:以交互模式运行容器,通常与 -t 同时使用;

-t:表示容器启动后会进入其命令行,为容器重新分配一个伪输入终端,通常与 -i 同时使用;

-p: 表示端口映射

有以下四种格式

ip:hostPort:containerPort

ip::containerPort

hostPort:containerPort

containerPort

前者表示宿主机端口,后者是容器内的映射端口,可以使用多个-p做多个端口映射

l 启动交互式容器

docker run -it --name=centos 镜像名称:标签 /bin/bash

拉取centos:docker pull centos

docker run -it centos /bin/bash

这时通过ps命令查看,发现可以看到启动的容器,状态为启动状态

也可以这样写

docker run -it --name=mycentos centos:latest /bin/bash

/bin/bash的作用是因为docker后台必须运行一个进程,否则容器就会退出,在这里表示启动容器后启动bash。

l 退出当前容器

exit

l 守护式方式创建容器:

docker run -di --name=容器名称 镜像名称:标签

docker run -di --name=mycentos2 centos:latest

登录守护式容器方式:

docker exec -it 容器名称(或者容器id) /bin/bash

什么是守护式容器:

能够长期运行

没有交互式会话

适合运行应用程序和服务

停止与启动容器

l 停止容器

docker stop 容器名称(或者容器id)

docker stop mycentos2

l 启动容器

docker start 容器名称(或者容器id)

docker start mycentos2

l 重启容器

docker restart 容器名称(或者容器id)

docker restart mycentos2

l 强制停止容器

docker kill 容器名称(或者容器id)

docker kill mycentos2

文件拷贝

如果需要将文件拷贝到容器内可以使用cp命令

docker cp 需要拷贝的文件或者目录 容器名称:容器目录

docker cp  /tmp/anaconda.log  mycentos2:/tmp

docker exec -it mycentos2 /bin/bash

l 也可以将文件从容器内拷贝出来

docker cp 容器名称:容器目录 需要拷贝的文件或者目录

docker cp  mycentos2:/tmp /export/

 

目录挂载

可以在创建容器的时候,将宿主机的目录和容器内的目录进行映射,这样就可以通过修改宿主机的某个目录的文件从而去影响容器

创建容器添加-v参数,后边为宿主机目录:容器目录,例如:

docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:latest

docker exec -it mycentos3 /bin/bash

ls /usr/local/myhtml/

cp /export/tmp/anaconda.log /usr/local/myhtml/

docker exec -it mycentos3 /bin/bash

docker run -di --privileged=true -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos3 centos:latest

如果共享的是多级的目录,可能会出现权限不足的提示。

这是因为Centos7中的安全模块selinux把权限禁掉了,我们需要添加参数--privileged=true来解决挂载的目录没有权限的问题?

查看容器ip地址

l 可以通过以下命令查看容器运行的各种数据

docker inspect 容器名称(容器id)

docker inspect mycentos3

也可以直接执行下面的命令直接输出IP地址

docker inspect --format=’{{.NetworkSettings.IPAddress}}’ 容器名称(容器id)

docker inspect --format=’{{.NetworkSettings.IPAddress}}’ mycentos3

 

删除容器

l 删除指定的容器:

docker rm 容器名称(容器ID)

docker stop mycentos3

docker rm mycentos3

 

 .NETCORE使用Docker部署到Linux

制作dockerfile文件

创建dockerfile文件

1 #FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
2 FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS build
3 WORKDIR /app
4 COPY . .  
5 EXPOSE 80  
6 ENTRYPOINT ["dotnet", "LP_SSK_API.dll"]

利用dockerfile文件制作镜像

将发布后的.netcore部署包上传到linux服务器上

使用dockerfile文件制作镜像

进入目录
cd /dockerfile文件所在目录
制作镜像 docker build
-t web .

使用镜像启动一个容器

docker run --name=mywebapi -p 8080:80 web

 Redis部署

首先拉取docker镜像

docker pull redis


如需指定版本,则使用

docker pull redis:<version> 

在本地某个位置创建以下内容建议将以下内容放在一起,方便以后管理和查看

# 以/docker/redis为例
mkdir /docker/redis
mkdir /docker/redis/data
touch /docker/redis/redis.conf
touch /docker/redis/redis.bash 

编辑配置文件vim /docker/redis/redis.conf

 

# Redis配置文件

# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
daemonize no

# 指定Redis监听端口,默认端口为6379
port 6379

# 绑定的主机地址,不要绑定容器的本地127.0.0.1地址,因为这样就无法在容器外部访问
bind 0.0.0.0

# 持久化
appendonly yes 

编辑/docker/redis/redis.bash

docker run -p 6379:6379 --name redis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d redis redis-server /etc/redis/redis.conf

  

说明下以上命令

docker run redis # 从redis镜像运行容器
-p 6379:6379 # 映射本地6379端口到容器6379端口,前为本地端口
--name redis # 设置容器名称为redis,方便以后使用docker ps进行管理
-v /docker/redis/redis.conf:/etc/redis/redis.conf # 关联本地/docker/redis/redis.conf文件到容器中/etc/redis/redis.conf,同样,前为本地
-v /docker/redis/data:/data # 关联本地/docker/redis/data到容器内/data目录,此为存放redis数据的目录,为方便以后升级redis,而数据可以留存
-d # 后台启动,使用此方式启动,则redis.conf中daemonize必须设置为no,否则会无法启动
redis-server /etc/redis/redis.conf # 在容器内启动redis-server的命令,主要是为了加载配置

给予执行权限

sudo chmod 777 /docker/redis/redis.bash

启动

/docker/redis/redis.bash
# 如果无法启动或者docker ps中无对应内容,将bash中命令复制出来,删除-d参数启动,查看报错信息
# 使用redis-cli或者rdm访问 localhost:6379
# 如需访问容器,可使用
docker exec -it redis bash
# 或直接使用redis-cli访问容器内redis
docker exec -it redis redis-cli

 VIM安装

  apt-get update 
//安装vim
  apt-get install vim

 

posted @ 2021-12-30 11:56  DaiWK  阅读(43)  评论(0编辑  收藏  举报