离线脚本安装
https://github.com/Jrohy/docker-install 下载离线安装脚本docker.bash、install.sh
https://download.docker.com/ 选择版本并下载docker离线安装包,https://download.docker.com/linux/static/stable/x86_64/docker-20.10.9.tgz 可以直接下载单版本
mkdir -p /root/setup/docker 创建安装文件存放目录,将docker.bash、install.sh、docker-20.10.9.tgz拷贝到该目录
cd /root/setup/docker & chmod u+x install.sh 进入脚本所在目录并赋予执行权限
./install.sh -f docker-20.10.9.tgz 执行安装脚本
出现 docker 20.10.9 install success! 表示安装成功。并可以使用docker info检查安装状态
在线安装流程
sudo yum install yum-utils -y 安装yum-utils工具
设置yum下载docker时的镜像加速,即增加备用yum仓库地址
#官方仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
#阿里云仓库--镜像加速
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#可以任选一个,阿里云的稍快一些,也可以都添加上
sudo yum makecache fast 更新yum缓存
sudo yum install docker-ce docker-ce-cli containerd.io -y 安装docker核心组件
yum install docker-ce docker-ce-cli containerd.io -y --allowerasing 可以避免一些包冲突
安装成功后执行systemctl enable docker命令设置开机自动启动,systemctl start docker命令启动docker,使用docker info检查安装状态
touch /etc/docker/daemon.json 创建docker外部配置文件
vim /etc/docker/daemon.json 编辑该文件
{
/*镜像地址池*/
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",//科大镜像站
"http://hub-mirror.c.163.com"//网易镜像站
],
"max-concurrent-downloads": 10,//当前最大下载数
"log-driver": "json-file",//日志驱动
"log-level": "warn",//日志级别
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"//数据根目录
}
systemctl restart docker 重启docker以应用配置,执行docker info | grep "http"即可发现配置已生效
ps.可以执行如下命令直接完成上面的前两步操作
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
}
EOF
官方镜像表
1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|
alpine | php | sentry | groovy | oraclelinux | bonita | mageia |
postgres | amazonlinux | logstash | erlang | swift | fluentd | silverpeas |
ubuntu | nextcloud | zookeeper | znc | haxe | backdrop | hola-mundo |
nginx | maven | couchdb | phpmyadmin | orientdb | r-base | known |
busybox | haproxy | cassandra | mono | photon | php-zendserver | sapmachine |
python | ruby | chronograf | owncloud | iojs | clearlinux | crux |
traefik | elasticsearch | jenkins | pypy | ibmjava | fsharp | sl |
redis | centos | drupal | jruby | crate | eggdrop | almalinux |
httpd | glassfish | couchbase | rust | archlinux | nuxeo | euleros |
node | tomcat | flink | arangodb | open-liberty | lightstreamer | sourcemage |
mysql | telegraf | composer | hylang | haskell | gazebo | clefos |
memcached | vault | matomo | odoo | opensuse | thrift | alt |
openjdk | adminer | fedora | xwiki | varnish | postfixadmin | dart |
golang | ghost | nats | elixir | plone | express-gateway | ibm-semeru-runtimes |
mongo | bash | teamspeak | jetty | cirros | eclipse-temurin | scratch |
hello-world | kong | swarm | tomee | notary | celery | hitch |
mariadb | caddy | joomla | aerospike | julia | friendica | rockylinux |
registry | gradle | kapacitor | jobber | irssi | hello-seattle | cheers |
debian | java | percona | django | r-base | spiped | dcl2020 |
docker | neo4j | adoptopenjdk | piwik | storm | swipl | eclipse-mosquitto |
sonarqube | kibana | rethinkdb | ros | clearlinux | rapidoid | websphere-liberty |
rabbitmq | solr | mediawiki | gcc | neurodebian | docker-dev | ubuntu-debootstrap |
wordpress | buildpack-deps | redmine | clojure | geonetwork | rakudo-star | |
influxdb | mongo-express | nats-streaming | yourls | backdrop | Kaazing Gateway | |
consul | perl | rocket.chat | amazoncorretto | hipache | ubuntu-upstart |
镜像搜索
dockers search image
docker search centos
docker search ubuntu
docker search debian
docker search alpine
docker search busybox
…
镜像拉取(下载镜像)
docker pull image
查看本地镜像
docker images
查看镜像
docker inspect image(tageName或者imgID--ID只需提供前几位即可,需要唯一)
查看镜像历史记录,即每一层(layer)的构建信息,history指令只能用于镜像
docker history image
导出镜像文件(该命令会导出在当前目录)
docker save image | gzip > image.tar.gz
删除镜像文件(镜像文件被容器使用时必须添加-f参数进行删除,但不推荐)
docker image rm image
从本地(当前目录)导入镜像文件
docker load < image.tar.gz 或者 docker load -i image.tar.gz
运行镜像文件
docker run image
run指令每执行一次就会创建一个新的容器,容器创建后其创建时指定的参数没有命令可以修改,只能手动修改启动配置文件(改错容器就无法启动),但可以通过docker container update configItem containerID指令增加配置项
从镜像创建容器,不指定–name配置项则随机生成name
docker run image
创建、启动容器并反弹容器伪终端,在该为终端执行exit退出终端时容器也会停止,一般会在run后加入-d参数使容器在后台运行但需要使用exec指令获取容器伪终端(进入容器)
docker run -it image bash
进入容器(获取容器伪终端)
docker exec -it container bash
查看正在运行的容器
docker ps
查看所有容器
docker ps -a
查看容器主程日志(标准输入、输出),exec伪终端的操作不会被记录日志,但应用日志内会记录execID
docker container logs containerID
通过容器ID启动容器,也可以通过容器name启动
docker container start containerID
停止容器
docker container stop containerID
重启容器
docker container restart containerID
删除容器(容器正在运行时需要添加-f参数进行强制删除操作)
docker container rm containerID
删除所有未启动的容器(会提示是否删除,输y回车即可但不建议)
docker container prune containerID
ps.若要从容器中退出来执行exit命令即可或者先按下Ctrl+p再按下Ctrl+q或者按住Ctrl不放再依次按p、q亦可退出容器
创建数据卷
docker volume create volName
查看所有数据卷
docker volume ls
通过数据卷名查看数据卷的详情信息
docker volume inspect volName
通过卷名删除数据卷
docker volume rm volName
删除所有未被使用的数据卷(未被容器挂载)
docker volume prune
ps.可以通过docker inspect containerID查看容器的"Mounts"即挂载卷信息
全装JDK-8u251的centos7镜像制作过程:
拉取centos:7官方基础镜像
docker pull centos:7
到Oracle官网下载jdk,并将jdk-8u251-linux-x64.tar.gz移动到宿主机/usr/local/jdk目录下
在宿主机/usr/local/jdk目录下使用vim命令新建Dockerfile并写入如下内容:
FROM centos:7
ADD jdk-8u251-linux-x64.tar.gz /usr/local/java
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_251 \
PATH=/usr/local/java/jdk1.8.0_251/bin:$PATH
CMD ['bash']
在Dockerfile所在的目录执行如下命令完成镜像文件构建
docker build -t centos7:jdk8 .
对制作的centos7:jdk8基础镜像进行测试:
使用centos7:jdk8创建一个容器
docker run -d -it --name java -v /root/temp:/root/temp -w /root/temp jdk:8 bash
在宿主机/root/temp目录下新建Hello.java文件并写入如下内容以进行简单测试
public class Hello{
public static void main(String[] args){
System.out.print("Hello World!\n");
}
}
使用容器环境进行编译工作
docker exec -it java javac Hello.java
使用容器环境运行java程序
docker exec -it java java Hello
最后结果输出:Hello World!
ps.所有用到的命令、指令以及参数在上文都已介绍过了
要运行nacos,必须先配备数据库并导入nacos_config.sql文件导入sql脚本前要先创建nacos_config数据库,nacos_configsql文件在nacos资源文件的conf目录下,nacos资源文件下载,此案例默认已配备好了数据库
首先将nacos资源文件nacos-server-1.4.2.zip在/root/temp目录下解压
unzip nacos-server-1.4.2.zip
使用vim修改vim /root/temp/nacos/conf/application.properties配置文件,需要修改的三个地方如下:
#将### If use MySQL as datasource:条目下的spring.datasource.platform=mysql前的注释去掉
spring.datasource.platform=mysql
#将### Count of DB:条目下的db.num=1注释去掉
db.num=1
#在### Connect URL of DB:条目下配置数据库连接信息,你自己的数据库连接地址、用户名和密码
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=dbuser
db.password.0=dbpwd
使用centos7:jdk8创建一个nacos适配容器并启动
docker run -d -it --name java-ncs -p 8848:8848 -v /root/temp:/root/temp -w /root/temp centos7:jdk8 bash
在宿主机依次执行下面两条命令以启动nacos,第一条命令将为第二条命令提供参照,所以顺序不能相反
docker exec -it java-ncs ./nacos/bin/startup.sh -m standalone
docker exec -it java-ncs nohup `cat /root/temp/nacos/logs/start.out` &
在浏览器通过http://hostip:8848/nacos即可实现对nacosWEB页面进行访问(hostip为宿主机ip)
ps.第4步之所以要用两条命令是因为第一条命令在逻辑上可行但实际上在宿主机上是不能成功执行滴所以需要第二行基础命令来启动nacos,当然也可以用基础命令启动前提是需要全部的启动参数,注意:如果exec进入容器那么第一条命令就能正确执行了。后面也可以使用官方的nacos镜像或者制作一个nacos镜像来简化这些繁杂的步骤,这里只是拿来测试jdk基础镜像的韧性罢了。
sentinel资源文件下载
首先将sentinel资源文件sentinel-dashboard-1.8.1.jar弄到/root/temp目录(不管你用什么方法,wget、scp、ftp)
使用centos7:jdk8创建一个sentinel适配容器并启动
docker run -d -it --name java-stn -p 8180:8080 -v /root/temp:/root/temp -w /root/temp centos7:jdk8 bash
在宿主机启动sentinel
docker exec -it java-stn nohup java -jar sentinel-dashboard-1.8.1.jar &
在浏览器通过http://hostip:8180即可实现对sentinelWEB页面进行访问了(hostip为宿主机ip)