Doker 学习笔记

Doker 学习笔记

Docker 安装

# 卸载服务器上旧的版本
yum remove dokcer \
		docker-client \
		docker-client-latest \
		docker-common \
		docker-latest \
		docker-latest-logrotate \
		docker-logrotate \
		docker-engine

# 安装docker需要的安装包
yum install -y yum-utils

# 设置镜像仓库,采用阿里云的
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新yun软件包索引
yum makecache fast
# 上面的执行不了用这个也可以
yum makecache

# 安装dokcer相关的源
yum install docker-ce docker-ce-cli containerd.io

# 启动docker
systemctl start docker

# 验证,输出docker的相关信息即可
docker version

# 官网例子
docker run hello-world

# 关闭docker
systemctl stop docker

# 重启docker
systemctl restart docker

# 卸载docker
# 1、卸载依赖
yun remove docker-ce docker-ce-cli containerd.io
# 2、卸载资源 /usr/lib/docker 是docker的默认资源路径
rm -rf /var/lib/docker

阿里云镜像加速

使用自己的阿里云账号登录阿里云,找到容器镜像服务,进入后在「镜像工具」-「镜像加速器」中可以看到加速器地址以及各平台的操作文档

image-20211202154952437

配置使用

# 创建目录
sudo mkdir -p /etc/docker
# 创建配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://yd7zmnct.mirror.aliyuncs.com"]
}
EOF
# 加载配置文件
sudo systemctl daemon-reload
# 重启docker
sudo systemctl restart docker

Docker 常用命令

帮助命令

# 查看Docker版本信息
docker version
# 查看Docker的系统信息,包含镜像和容器的数量
docker info
# 帮助命令,自行学习使用
docker --help

Docker 官方文档地址:https://docs.docker.com

镜像常用命令

# 查看所有镜像
docker images
# REPOSITORY-镜像源 TAG-标签,版本 IMAGE ID-镜像的id CREATED-镜像创建时间 SIZE-镜像大小

image-20211211125015455

# 列出镜像列表详细信息
docker images -a
# 列出镜像的id列表
docker images -q
# 搜索镜像命令
docker search nginx

image-20211211125725696

# 下载镜像:会默认下载最新的
docker pull nginx
# 指定需要的版本进行下载,需要注意tab在docker hub上一定要存在
docker pull nginx:1.17.0
# 删除镜像,可以根据镜像id或者镜像名进行删除
docker rmi -f IMAGE_ID
docker rmi -f IMAGE_NAME
# 遍历删除所有镜像
docker rmi -f $(docker images -aq)

容器常用命令

有了镜像才可以创建容器

# 拉取镜像
docker pull centos
# 新建容器并启动
docker run -it centos

参数说明

–name 指定容器名称,用来区分容器

-d 后台方式运行

-it 交互方式运行,可进入容器查看内容

-p 指定容器的端口,如: -p 8080:8080,指定端口可以有一下几种方式

​ -p ip:主机端口:容器端口

​ -p 主机端口:容器端口(常用)

​ -p 容器端口

-P 随机指定端口

# 列出所有在运行的容器
docker ps

# 列出所有容器
docker ps -a

# 列出所有容器id
docker ps -aq

# 启动已有容器
docker start 容器id

# 停止容器
docker stop 容器id

# 强制停止容器
docker kill 容器id

# 重启容器
docker restart 容器id

# 删除指定容器
docker rm 容器id

# 删除所有容器
docker rm -f $(docker ps -aq)
docker ps -a -q|xargs docker rm

常用其它命令

# 查看容器运行日志
docker logs -f 容器id
# --tf 					显示日志
# --tail number 要显示的日志条数,不设置时自动加载

# 查看容器中的进程
docker top 容器id

# 查看容器的元数据
docker inspect 容器id

# 进入容器
# 方式一:进入容器后开启一个新的终端,可以在里面执行指令操作(常用)
docker exec -it /bin/bash
# 方式二:进入容器中正在执行的终端,不会启动新的进程
docker attach 容器id

# 从容器内拷贝文件到宿主机上
docker cp 容器id:/容器中的路径/容器中的文件 宿主机的目录
# 如;docker cp asdfeesdf:/home/test.java /home

Docker 空悬镜像

build新的镜像出来,之前的镜像会变成<none>镜像,已经是没有用了的镜像,可以删除掉。

删除空悬镜像

docker rmi $(docker images -f "dangling=true" -q)

容器数据卷

挂载数据卷

挂载的意义,防止容器被删除时,所以数据都被清除,挂载到宿主机,删除容器,数据还是存在的

# 启动容器时,挂载容器内目录
docker run -d -p 3306:3306 -v /houme/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql

/houme/mysql/conf 本地指定的my.cnf的路径

/etc/mysql/conf.d 容器内的配置文件路径

/home/mysql/data 本地指定存储mysql的数据的路径

/var/lib/mysql 容器内mysql的数据存储路径

匿名挂载

docker run -d -P --name nginx-01 -v /etc/nginx nginx
# 此时 -v 后面只有容器内的路径,此时就是匿名挂载

具名挂载

docker run -d -P --name nginx-02 -v juming-nginx:/etc/nginx nginx
# 此时 -v 后面是不是以/开头的,此时是具名挂载,通过下面的命令,可看到具名挂载的列表
docker volume ls

挂载方式区分

-v 容器内路径 匿名挂载

-v 卷名:容器内路径 具名挂载

-v /宿主机路径:容器内路径 指定路径挂载

在容器内路径后面跟上 :ro(说明这个路径只能从宿主机操作,容器内部无法操作),:rw(可读可写)

数据卷容器

多个容器是可以共用一个挂载,以此多个容器做到数据共享。

DockerFile

Dockerfile 是用来构建docker镜像的构建文件,文件是由命令脚本组成

构建步骤:

1、编写一个dockerfile文件

2、docker build 构建成为一个镜像

3、docker run 运行镜像

4、docker push 发布镜像(DockerHub、阿里云镜像仓库等)

Dockerfile指令说明

FROM          # 基础镜像层,在这个镜像基础上进行
MAINTAINER    # 镜像的作者,姓名+邮箱
RUN 					# 镜像构建时需要运行的命令
ADD						# 复制文件到容器中
WORKDIR				# 镜像的工作目录
VOLUME				# 设置卷,挂载主机目录
EXPOSE				# 指定暴露端口
CMD						# 指定容器启动时候验运行的命令,只有最后一个会生效,可被替代
ENTRPOINT			# 指定容器启动时候验运行的命令,可以追加命令
ONBUILD				# 当构建一个被继承Dockerfile,这个时候会触发ONBUILD的指令
COPY					# 类似ADD命令,将文件拷贝到镜像中
ENV						# 构建的时候设置环境变量

构建自己的centos

# 创建dockerfile文件
vim mydockerfile-centos

# 编写内容
FROM centos
MAINTAINER wangx iamwx@foxmail.com

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "------ end ------"
CMD /bin/bash

# 构建自己的镜像
docker build -f /path/mydockerfile-centos -t wangx/centos:1.0

# 运行
docker run -it -d wangx/centos:1.0

# 查看镜像构建的历史
docker history 镜像id

Docker 网络

网络模式

bridge:桥接模式,默认的

host:和宿主机共享网络

none:不配置网络

container:容器网络联通(用得少,局限大)

自定义网络

# 查看网络的指令帮助文档
docker network --help

image-20211202180515408

connect:连接容器到另一个网络

create:自定义网络

disconnect:让容器从一个网络中断连

inspect:显示一个或多个网络上的详细信息,在后面加上容器名称或容器id即可查看

ls:列出所有网络

prune:删除所有未使用的网络

rm:删除指定网络

创建网络执行示例

docker network create --driver bridge --subnet 192.168.1.0/16 --gateway 192.168.1.1 mynet

–driver 指定使用bridge模式

–subnet 设置子网,支持的ip范围将会是 192.168.1.2~192.168.255.255

–gateway 设置网关

mynet 自定义的网络名称

image-20211202181534610

打包镜像

# -t 后面是镜像名称,后面是版本号,-f 指定文件, 最后的点是指定当前目录下
docker build -t wangx1013/openjdk8-agent:1.0 -f Dockerfile .

# 查看镜像
wangx@axing jdk8-agent % docker images
REPOSITORY                 TAG       IMAGE ID       CREATED        SIZE
wangx1013/openjdk8-agent   1.0     899346e080aa   4 months ago   306MB

推送镜像到镜像仓库

以阿里云为例

# 首先进行登录
docker login --username=iamwx1013 registry.cn-hangzhou.aliyuncs.com --password=wangxin.000

# 登录成功
Login Succeeded

# 打一个tag
docker tag 899346e080aa registry.cn-hangzhou.aliyuncs.com/wxstudyk8s/openjdk8-agent:1.0
# 推到镜像仓库
docker push registry.cn-hangzhou.aliyuncs.com/wxstudyk8s/openjdk8-agent:1.0

通过以上步骤即可在阿里云镜像查看到镜像

拓展

保存镜像到本地

# 拉取远程镜像保存到本地
docker save -0 xxx.tar IMAGE_NAME:TAB
# 保存本地镜像到本地
docker save -0 xxx.tar IMAGE_ID

导入镜像压缩包到docker中

cat xxx.tar | docker import - IMAGE_NAME:TAG

从狂神大佬那里看视频记录的笔记,详细查看可自行前往:https://www.bilibili.com/video/BV1og4y1q7M4?p=23

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340