uos-docker部署使用文档

一、基础操作

Docker教程:https://www.lixian.fun/3812.html

1.1 安装

  • UOS安装docker
apt install -y docker.io
  • 服务管理
systemctl status docker
systemctl enable docker
systemctl disable docker
systemctl start docker
systemctl stop docker
  • 测试
docker run hello-world

uos-docker部署使用文档

1.2 Docker的*仓库

1.Docker官方的*仓库:这个仓库是镜像最全的,但是下载速度较慢。

https://hub.docker.com/

2.国内的镜像网站:网易蜂巢,daoCloud等,下载速度快,但是镜像相对不全。

https://c.163yun.com/hub#/home

http://hub.daocloud.io/ (推荐使用)

1.3 镜像加速

需要创建 /etc/docker/daemon.json,并添加如下内容

{
	"registry-mirrors":["https://registry.docker-cn.com"],
}
#重启两个服务
systemctl restart docker
docker info

uos-docker部署使用文档

二、镜像操作

  • 搜索镜像
docker search nginx
  • 下载镜像
# 从官方下载镜像
docker pull tomcat

# 从第三方源下载镜像
docker pull daocloud.io/library/tomcat:8.5.15-jre8

uos-docker部署使用文档

  • 查看已经下载安装过的镜像
docker images
  • 删除镜像
docker rmi 镜像ID
# 例如
docker rmi b8dfe9ade316
  • 镜像导出
docker save -o 导出生成的镜像文件名称  需要导出的镜像ID
# 例如
docker save -o tomcat.img b8d
  • 镜像导入
docker load -i 镜像文件名
# 例如
docker load -i tomcat.img
  • 修改镜像名称及版本
docker tag 镜像ID  名称:版本
# 例如
docker tag  b8 tomcat:8.5

三、容器操作

  • 创建并运行容器
docker run -d -p -it 系统映射端口:容器端口 --name 定义容器名称 镜像ID|镜像名称:版本

# 例如
docker run -d -p 80:8080 -it --name tomcat b8df

需要注意docker run是用来创建容器的,只不过会在创建后启动容器,当容器创建后,以后再启动容器就不用要run了。
-i:启用交互式

-t:启用tty

-d:后台运行

-p:指定端口映射

-e:给容器环境变量传值

--link:关联容器

--restart=always :设置自启动,当docker服务启动后自动运行容器

# 将宿主机所有网卡的一个随机端口映射到容器的80端口
-p 80  

# 将主机的某一个网卡的随机端口映射到容器的80端口,ip:后面为空代表此IP的任意端口
-p 192.168.149.140::80

# 将所有网卡的指定端口映射到容器的80端口
-p 8080:80

可以用个docker port 容器id来查看端口映射
或者通过iptables -L -n -t nat 来查看生成的iptables规则
--name:设置容器名称

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

# 查看所有容器,包括未运行的
docker ps -a

# 仅查看所有容器ID
docker ps -qa
  • 删除容器
# 删除单个容器
docker rm 容器ID

# 删除所有容器
docker rm `docker ps -qa`
  • 启动/停止容器
docker start   容器名称|容器ID
docker stop    容器名称|容器ID
docker restart 容器名称|容器ID
  • 进入容器
docker exec -it 容器ID|容器名称 bash
  • 查看容器日志
docker logs -f  容器ID|容器名称
  • 查看容器详细信息
docker inspect e4 

四、Docker网络

  • none
  • bridage
  • container share
  • host

五、Docker数据卷

docker容器默认使用的卷有以下缺点

  • 容器删除后,会将卷及卷内的数据一并删除,数据不能持久化存储。

  • 容器一旦有问题,不能进行数据迁移

  • 宿主机需要进入到容器内才能操作容器数据
    数据卷优点

  • 可以将宿主机本地的一个目录映射到容器的某个目录

  • 维护容器的配置及数据时,可以直接在宿主机维护

  • 数据可以持久化存储

  • 可以将数据卷映射到速度快的磁盘上,提升容器性能

  • 多个容器可以共享一个数据卷
    配置方法:只需在run的时候加上-v选项即可

如果目录不存在,会自动创建目录,无需手动创建。

# 将宿主机的/data目录映射到容器的/data目录
docker run -d -p 80:8080 -it -v /data:/data --name web1 b8df

# 如果不指定宿主机目录,将会映射到docker默认的目录下
docker run -d -p 80:8080 -it -v /data --name web2 b8df

# 查看映射的位置,默认在/var/lib/docker/volumes下
docker inspect web2

uos-docker部署使用文档

六、Dockerfile

  1. 第一行非注释行必须是FROM指令
  2. 指定不区分大小写,惯例大写
  3. 打包镜像所引用的文件必须跟Dockerfile文件在同级目录或子目录

指令

  • FROM
    指定需要制作镜像的基本镜像,后续指令都是基于此镜像操作。

如:FROM nginx

  • MAINTANIER
    指定作者的详细信息

如:MAINTANIER "zhangsan zhangsan@qq.com"

  • COPY
    从宿主机复制文件到镜像内

如:COPY image /data/test

  • ADD
    同COPY,但可以支持URL下载及tar包解压

如:ADD image.tar.gz /usr/local/image/

ADD http://xxx.xxx.xxx/xxx.tar.gz /usr/local/image/

  • WORKDIR
    改变当前所在目录,相当于cd命令,仅影响WORKDIR之后的指令

如:WORKDIR /usr/local/

  • VOLUME
    指定存储卷,采用docker方式映射,既宿主机映射目录为docker自动生成的目录。

如:VOLUME /data/mysql

  • EXPOSE
    指定容器运行后所监听的默认端口,可以监听多个端口。

如:EXPOSE 22

EXPOSE 80/tcp 53/udp

  • ENV
    定义容器环境变量。

如:ENV DOC_ROOT=/var/www/html/

定义多个变量

ENV NAME=tanqing \

AGE=24 \

SEX=boy

  • RUN
    构建镜像时运行的shell命令。

如:RUN apt install -y openssh-server \

mkdir /var/run/sshd

  • CMD

运行容器后,如果docker run的时候没有指定执行的命令,那么默认会执行次该指令定义的命令。
uos-docker部署使用文档

  • ENTRYPOINT
    和CMD类似,区别在于,如果docker run的时候指定了执行的命令,那么也也不会执行该命令,而是会执行ENTRYPOINT定义的命令,并把docker run的命令当参数传递给ENRTYPOINT定义的命令。
上一篇:a


下一篇:Pandas 中对特定时间(时间段)范围进行 筛选