失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Docker基础(centos安装 阿里云镜像加速器配置 常用命令 数据卷 DockerFile 镜像推送阿里云等)

Docker基础(centos安装 阿里云镜像加速器配置 常用命令 数据卷 DockerFile 镜像推送阿里云等)

时间:2022-01-20 08:41:24

相关推荐

Docker基础(centos安装 阿里云镜像加速器配置 常用命令 数据卷 DockerFile 镜像推送阿里云等)

Centos 8.1安装Docker

下载docker-ce.repo

curl /linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

安装依赖

yum install /linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm

安装docker-ce

yum install docker-ce -y

启动docker

systemctl start docker

阿里云镜像加速器配置

阿里云镜像加速器地址 https://cr./cn-shanghai/instances/mirrors

vim /etc/docker/daemon.json{ “registry-mirrors”: [“https://xxxx.”] }systemctl daemon-reloadsystemctl restart docker

最后使用docker info命令查看镜像加速器是否生效

命令

帮助命令

docker --help

docker info

docker version

镜像命令

docker images 列出本地主机上的镜像

​ -a 列出本地所有的镜像(含中间映像层)

​ -q 只显示镜像ID

​ --digests 显示镜像的摘要信息

​ --no-trunc 显示完整的镜像信息

docker search 在hub上查找有哪些镜像

docker search -s 300 tomcat 收藏数超过300的tomcat镜像

​ --no-trunc 显示完整的镜像信息

docker pull tomcat == docker pull tomcat:latest 下载镜像

docker rmi hello-world 删除hello-world镜像

docker rmi -f hello-world 强制删除hello-world镜像

docker rmi -f nginx hello-world 删除多个

docker rmi -f $(docker images -q) 删除所有

docker history hzy/centos:2.0 列出镜像变更历史

docker如何导入导出镜像

导出

docker save 镜像id >/mydocker/tomcat.tar

导入

docker load < tomcat.tar

修改镜像名称和标签名称

docker tag 镜像id tomcat:8

容器命令

docker run -it imageid 启动交互式容器 (image id 使用docker images查看)

​ --name 为容器指定一个名称

​ -d 后台运行容器,并返回容器ID

​ -i 以交互式模式运行容器

​ -t 为容器重新分配一个伪输入终端

​ -P 随机端口映射

​ -p 指定端口映射

docker run -d centos /bin/sh -c “while true;do echo hello centos;sleep 5;done” 带脚本的后台运行容器

docker run -d -p:3306:8080 hzy/tomcat:1.0 不带脚本的后台运行容器

docker run -it -p:8080:8080 tomcat 指定外部端口和容器端口

docker run -it -P tomcat 随机端口映射

docker ps 查看运行的

​ -l 上次运行的容器

​ -a 列出当前所有正在运行的容器+历史上运行的

​ -n 显示最近n个创建的容器 如:-n 5

​ -q 静默模式,只显示容器编号

​ --no-trunc 不截断输出

exit 容器停止退出

ctrl+P+Q 容器不停止退出

docker start 容器id 启动容器 (容器id CONTAINER ID ,可以使用docker ps查看)

docker restart 容器id 重启容器

docker stop 容器id 停止容器

docker kill 容器id 强制停止容器

docker rm 容器id 删除已经停止的容器

​ -f 先停止在删除

docker rm -f $(docker ps -qa) 删除所有容器

docker logs 容器id 查看容器日志

​ -t 加入时间戳

​ -f 跟随最新日志打印

​ --tail 显示最后多少条

docker top 容器id 查看容器内运行的进程

docker inspect 容器id 查看容器内部细节

docker attach 容器id 直接进入容器启动命令的终端,不会启动新的进程

docker exec 容器id ls -l /root 在容器外宿主机操作容器

docker exec -it 容器id /bin/bash 进入容器

docker cp 容器id:容器文件地址 宿主机地址 复制容器内的文件到宿主机上

docker commit -a=“作者” -m=“提交的描述信息” 容器id 要创建的目标镜像名:标签名

docker commit -a=“hzy” -m=“tomcat9” 容器id hzy/tomcat 提交

数据卷

docker run -it -v 宿主机绝对路径目录:容器内目录 镜像名

docker run -it -v 宿主机绝对路径目录:容器内目录:ro 镜像名 ro只读,容器只能读文件

编写Dockerfile制作容器卷

第一步:

# volume testFROM centosVOLUME ["/dataVolumeContainer1","dataVolumeContainer2"]CMD echo "finished,-----------success"CMD /bin/bash

第二步:

执行build -f 参数才是用来指定 Dockerfile 的路径的

docker build 最后的 . 号 指定镜像构建过程中的上下文环境的目录

docker build -f Dockerfile目录 -t 镜像名称 .

docker build -f /mydocker/Dockerfile -t centos .

第三步:docker run 新的镜像名称

使用 docker inspect 指令来查看数据卷中容器的目录地址对应宿主机的地址

docker inspect 容器id

数据卷容器

启动01

docker run -it --name 01 hzy/centos:1.0

启动02 并继承 01(使用继承 父子可以共享文件,各自添加都可以共享。及时父容器被删除,子容器与子容器之间依旧可以共享)

docker run -it --name 02 --volumes-from 01 hzy/centos:1.0

DockerFile

保留字指令

FROM 基础镜像,当前镜像是基于哪个镜像的

MAINTAINER 镜像维护者的姓名和邮箱地址

RUN 容器构建时需要运行的命令

EXPOSE 当前容器对外暴露的端口

WORKDIR 指定在创建容器后,终端默认登录的进来的工作目录,一个落脚点

ENV 用来在构建镜像过程中设置环境变量

ADD 将宿主机目录下的文件拷贝到镜像且自动处理URL和解压tar压缩包

COPY 类似ADD 拷贝文件和目录到镜像中

VOLUME 容器数据卷,用于数据保存持久化工作

CMD 指定一个容器启动时要运行的命令,DockerFile中可以有多个CMD命令,但只有最后一个生效,CMD会被docker run之后参数替换

ENTRYPOINT 和CMD一样,不同点:,CMD不会被docker run之后参数替换,会追加

ONBUILD 当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild被触发

制作centos的DockerFile并构建镜像

编写DockerFile文件并命令为DockerfileCentos

FROM centosMAINTAINER hzy<hu_ziyang@>ENV MYPATH /usr/localWORKDIR $MYPATHRUN yum -y install vimRUN yum -y install net-toolsEXPOSE 80CMD echo "------success------"CMD /bin/bash

执行build构建新的镜像

docker build -f /mydocker/DockerfileCentos -t hzy/centos:2.0 .

制作tomcat的DockerFile并构建镜像

编写DockerFile文件并命令为Dockerfile

FROM centosMAINTAINER hzy<hu_ziyang@>COPY c.txt /usr/local/copy.txtADD jdk-8u231-linux-x64.tar.gz /usr/local/ADD apache-tomcat-8.5.59.tar.gz /usr/local/RUN yum -y install vimENV MYPATH /usr/localWORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk1.8.0_231ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarENV CATALINA_HOME /usr/local/apache-tomcat-8.5.59ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.59ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/binEXPOSE 8080CMD /usr/local/apache-tomcat-8.5.59/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.59/bin/logs/catalina.out

执行build构建新的镜像

docker build -t hzy/tomcat8:1.0 .

执行run(添加两个容器卷 --privileged=true 权限问题)

docker run -d -p 8080:8080 --name tomcat8 -v /mydocker/tomcat/test:/usr/local/apache-tomcat-8.5.59/webapps/test-v /mydocker/tomcat/tomcat8logs/:/usr/local/apache-tomcat-8.5.59/logs--privileged=truehzy/tomcat8:1.0

常用安装

mysql5.7安装

拉镜像

docker pull mysql:5.7

执行

docker run -p 3306:3306 --name mysql -v /mydocker/mysql5.7/conf:/etc/mysql/conf.d -v /mydocker/mysql5.7/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=19981101 -d d821b79a874a

启动成功,进入mysql容器

docker exec -it mysql容器id /bin/bash

进入mysql容器,登录mysql

mysql -uroot -p

在宿主机上备份mysql所有数据库

docker exec mysql容器id sh -c 'exec mysqldump --all-databases -uroot -p"123456"' >/mydocker/mysql5.7/all-databases.sql

redis3.2安装

拉镜像

docker pull redis:3.2

执行

docker run -p 6379:6379 -v /mydocker/redis3.2/data:/data -v /mydocker/redis3.2/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis:3.2 redis-server /usr/local/etc/redis/redis.conf --appendonly yes

编写redis配置文件

vim /mydocker/redis3.2/conf/redis.conf/redis.conf

# Redis配置文件样例# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程# 启用守护进程后,Redis会把pid写到一个pidfile中,在/var/run/redis.piddaemonize no# 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定pidfile /var/run/redis.pid# 指定Redis监听端口,默认端口为6379# 如果指定0端口,表示Redis不监听TCP连接port 6379# 绑定的主机地址# 你可以绑定单一接口,如果没有绑定,所有接口都会监听到来的连接# bind 127.0.0.1# 当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能timeout 0# 指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verboseloglevel verbose# 日志记录方式,默认为标准输出,如果配置为redis为守护进程方式运行,而这里又配置为标准输出,则日志将会发送给/dev/nulllogfile stdout# 设置数据库的数量,默认数据库为0,可以使用select <dbid>命令在连接上指定数据库id# dbid是从0到‘databases’-1的数目databases 16################################ SNAPSHOTTING ################################## 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合# Save the DB on disk:## save <seconds> <changes>## Will save the DB if both the given number of seconds and the given# number of write operations against the DB occurred.## 满足以下条件将会同步数据:# 900秒(15分钟)内有1个更改# 300秒(5分钟)内有10个更改# 60秒内有10000个更改# Note: 可以把所有“save”行注释掉,这样就取消同步操作了save 900 1save 300 10save 60 10000# 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大rdbcompression yes# 指定本地数据库文件名,默认值为dump.rdbdbfilename dump.rdb# 工作目录.# 指定本地数据库存放目录,文件名由上一个dbfilename配置项指定# # Also the Append Only File will be created inside this directory.# # 注意,这里只能指定一个目录,不能指定文件名dir ./slave-serve-stale-data yes# 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。# 因为redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no# IMPORTANT: Check the BGREWRITEAOF to check how to rewrite the append# log file in background when it gets too big.appendonly no# 指定更新日志文件名,默认为appendonly.aof# appendfilename appendonly.aof# The fsync() call tells the Operating System to actually write data on disk# instead to wait for more data in the output buffer. Some OS will really flush # data on disk, some other OS will just try to do it ASAP.# 指定更新日志条件,共有3个可选值:# no:表示等操作系统进行数据缓存同步到磁盘(快)# always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)# everysec:表示每秒同步一次(折衷,默认值)appendfsync everysec# appendfsync nono-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mbslowlog-log-slower-than 10000slowlog-max-len 1024# 指定是否启用虚拟内存机制,默认值为no,# VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中# 把vm-enabled设置为yes,根据需要设置好接下来的三个VM参数,就可以启动VM了vm-enabled no# vm-enabled yes# Redis交换文件最好的存储是SSD(固态硬盘)# 虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享vm-swap-file /tmp/redis.swap# 将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多少,所有索引数据都是内存存储的(Redis的索引数据就是keys)# 也就是说当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0vm-max-memory 0# Redis swap文件分成了很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是要根据存储的数据大小来设定的。# 建议如果存储很多小对象,page大小最后设置为32或64bytes;如果存储很大的对象,则可以使用更大的page,如果不确定,就使用默认值vm-page-size 32# 设置swap文件中的page数量由于页表(一种表示页面空闲或使用的bitmap)是存放在内存中的,在磁盘上每8个pages将消耗1byte的内存# swap空间总容量为 vm-page-size * vm-pages#vm-pages 134217728# 设置访问swap文件的I/O线程数,最后不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成比较长时间的延迟,默认值为4vm-max-threads 4# 指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法hash-max-zipmap-entries 512hash-max-zipmap-value 64list-max-ziplist-entries 512list-max-ziplist-value 64set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-value 64# 指定是否激活重置哈希,默认为开启activerehashing yes# 指定包含其他的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各实例又拥有自己的特定配置文件# include /path/to/local.conf# include /path/to/other.conf

在宿主机上连接redis

docker exec -it redis容器id redis-cli

镜像推送阿里云

制作镜像

docker commit -a="hzy" -m="redis3.2" 容器id hzy/redis:3.2.1

在阿里云容器镜像服务中创建镜像仓库

docker login --username=199****5067 -

docker tag 镜像id -/huziyang/myredis:3.2.1docker push -/huziyang/myredis:3.2.1

如果觉得《Docker基础(centos安装 阿里云镜像加速器配置 常用命令 数据卷 DockerFile 镜像推送阿里云等)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。