Docker安装及操作
Posted Lossdate
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker安装及操作相关的知识,希望对你有一定的参考价值。
一、前置条件
- 环境
案例用虚拟机安装
CPU :2核心以上
内存 :至少2G
硬盘 :50G以上
CentOS版本 :CentOS7 -> 7.8以上 - centos下载
http://mirrors.aliyun.com/centos/7/isos/x86_64/
二、 centos配置
- 查看centos系统版本命令
cat /etc/centos-release
- 配置阿里云yum源
# 1.下载安装wget yum install -y wget # 2.备份默认的yum mv /etc/yum.repos.d /etc/yum.repos.d.backup # 3.设置新的yum目录 mkdir -p /etc/yum.repos.d # 4.下载阿里yum配置到该目录中,选择对应版本 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 5.更新epel源为阿里云epel源(新安装的系统可省略前两步) mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo # 6.重建缓存 yum clean all yum makecache # 7.看一下yum仓库有多少包 yum repolist
- 升级系统内核
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm yum --enablerepo=elrepo-kernel install -y kernel-lt grep initrd16 /boot/grub2/grub.cfg grub2-set-default 0 reboot #P.S. 做好快照备份
- 查看centos系统内核命令
uname -r uname -a #可以看到升级到了5.4.132 : 5.4.132-1.el7.elrepo.x86_64
- 其它查看命令
#查看CPU命令 lscpu #查看内存命令 free free -h free -m #查看硬盘信息 fdisk -l
- 关闭防火墙
systemctl stop firewalld systemctl disable firewalld
- 关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux setenforce 0
- 网桥过滤
vi /etc/sysctl.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-arptables = 1 net.ipv4.ip_forward=1 net.ipv4.ip_forward_use_pmtu = 0 # 生效命令 sysctl --system
- 添加命令自动补全
# 安装bash-completion yum -y install bash-completion bash-completion-extras # 使用bash-completion source /etc/profile.d/bash_completion.sh
- P.S. 做好快照备份
三、Docker安装
-
阿里云开发者平台
可以参考阿里云官网提供的docker安装教程进行安装https://www.aliyun.com/
-
前置条件
yum install -y yum-utils device-mapper-persistent-data lvm2
-
添加源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast
-
查看版本
yum list docker-ce --showduplicates | sort -r
-
安装
# 安装最新版 yum -y install docker-ce # 安装指定版本 语法规则:yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io yum -y install docker-ce-18.06.3.ce-3.el7 docker-ce-cli.x86_64 #这里安装19.03.9-3 yum install -y docker-ce-19.03.9-3.el7 docker-ce-cli-19.03.9-3.el7
-
启动
systemctl start docker systemctl status docker
-
安装阿里云镜像加速器
加速器地址:阿里云 -> 控制台 -> 容器镜像服务 -> 镜像工具 -> 镜像加速器
mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' "registry-mirrors": ["https://复制自己的加速器地址.mirror.aliyuncs.com"] EOF systemctl daemon-reload systemctl restart docker
-
设置开机启动
systemctl enable docker
-
查看信息
docker -v docker version docker info
-
P.S. 做好快照备份
四、Docker镜像操作
- 官网地址
https://docs.docker.com/engine/reference/run/
- Docker镜像(image)网址
https://hub.docker.com/
- 查看镜像列表
docker images docker image ls
- save命令 -> 打包成tar
docker save tomcat:9.0.20-jdk8-slim > tomcat9.slim.tar
- load命令 -> 解压成docker镜像
docker load -i linux.tar docker load < tomcat9.0.20.tar #--input , -i : 指定导入的文件 #--quiet , -q : 精简输出信息
- search命令(不推荐使用 -> 直接官网查)
docker search tomcat
- inspect命令
可以获取镜像的详细信息,其中包括创建者,各层的数字摘要等
如果想获取其中指定的一项内容,可以通过 -f 来指定docker inspect tomcat:9.0.20-jdk8-slim docker inspect -f ".Size" tomcat:9.0.20-jdk8-slim
- history命令
可以列出各个层的创建信息docker history tomcat:9.0.20-jdk8-slim
- tag命令
标记本地镜像,将其归入某一仓库docker tag tomcat:9.0.20-jdk8-slim lossdate/tomcat:9
- rmi命令 -> 删除
docker rmi tomcat:9.0.20-jdk8-slim docker image rm tomcat:9.0.20-jdk8-slim #常用参数 #-f, -force : 强制删除镜像,即便有容器引用该镜像 #-no-prune : 不要删除未带标签的父镜像
- 清理镜像
docker image prune #-a, --all : 删除所有没有用的镜像,而不仅仅是临时文件 #-f, --force :强制删除镜像文件,无需弹出提示确认
五、Docker容器操作
-
新建并启动容器
#语法 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] #运行容器 docker run -it --rm -p 8080:8080 tomcat:9.0.20-jdk8-slim #后台运行容器 docker run -itd --name tomcat9 -p 8083:8080 tomcat:9.0.20-jdk8-slim #常用参数 -d, --detach=false: 后台运行容器,并返回容器ID -i, --interactive=false: 以交互模式运行容器,通常与 -t 同时使用 -P, --publish-all=false: 随机端口映射,容器内部端口随机映射到主机的端口。不推荐使用该参数 -p, --publish=[]: 指定端口映射,格式为:主机(宿主)端口:容器端口,推荐使用 -t, --tty=false: 为容器重新分配一个伪输入终端,通常与 -i 同时使用 --name="nginx-lb": 为容器指定一个名称 -h , --hostname="laosiji": 指定容器的hostname -e , --env=[]: 设置环境变量,容器中可以使用该环境变量 --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型 --link=[]: 添加链接到另一个容器;不推荐使用该参数 -v, --volume : 绑定一个卷 --privileged=false: 指定容器是否为特权容器,特权容器拥有所有的capabilities --restart=no:指定容器停止后的重启策略 no:容器退出时不重启 on-failure:容器故障退出(返回值非零)时重启 always:容器退出时总是重启,推荐各位小伙伴们使用 --rm=false: 指定容器停止后自动删除容器,不能以docker run -d启动的容器
-
容器日志
#语法 docker logs [OPTIONS] CONTAINER #执行命令 docker logs -f tomcat9 #常用参数 -f : 跟踪日志输出 --tail :仅列出最新N条容器日志
-
删除容器
#语法 docker rm [OPTIONS] CONTAINER [CONTAINER...] #需要先停止运行中的容器再删除,否则无法删除容器 docker stop tomcat9 #按照容器名称删除 docker rm tomcat9 #按照容器ID删除 docker rm 8dd95a95e687 #常用参数 -f :通过 SIGKILL 信号强制删除一个运行中的容器 -l :移除容器间的网络连接,而非容器本身 -v :删除与容器关联的卷
-
查看容器列表
#语法 docker ps [OPTIONS] #查看运行中的容器 docker ps #查看所有容器 docker ps -a #常用参数 -a :显示所有的容器,包括未运行的 -q :只显示容器编号 #实用技巧 #停止所有运行容器 docker stop $(docker ps -qa) #删除所有的容器 docker rm $(docker ps -aq) docker rm $(docker stop $(docker ps -q)) #删除所有的镜像 docker rmi $(docker images -q)
-
创建容器
创建一个新的容器但不启动它#语法 docker create [OPTIONS] IMAGE [COMMAND] [ARG...] #执行命令 docker create -it --name tomcat9 -p tomcat:9.0.20-jdk8-slim
-
启动、关闭、重启容器
#语法 docker start [OPTIONS] CONTAINER [CONTAINER...] docker stop [OPTIONS] CONTAINER [CONTAINER...] docker restart [OPTIONS] CONTAINER [CONTAINER...] #执行命令 docker start tomcat9 docker stop tomcat9 docker restart tomcat9
-
进入容器
在运行的容器中执行命令#语法 docker exec [OPTIONS] CONTAINER COMMAND [ARG...] #执行命令 docker exec -it [id] /bin/bash #有bash命令的linux系统:例如centos docker exec -it tomcat9 /bin/bash #没有bash命令的linux系统:例如alpine系统 docker exec -it tomcat9 sh #退出 exit #常用参数 -i :即使没有附加也保持STDIN 打开 -t :分配一个伪终端
-
查看容器
#语法 docker inspect [OPTIONS] NAME|ID [NAME|ID...] #执行命令 docker inspect tomcat9 #常用参数 -f :指定返回值的模板文件 -s :显示总的文件大小 --type :为指定类型返回JSON
-
更新容器
#语法 docker update [OPTIONS] CONTAINER [CONTAINER...] #更新容器restart策略 docker update --restart always tomcat9
-
kill
#语法 docker kill [OPTIONS] CONTAINER [CONTAINER...] #执行命令 docker kill tomcat9 #常用参数 -s :向容器发送一个信号
六、nginx安装
- 官网地址
https://hub.docker.com/_/nginx
- 拉取镜像
docker pull nginx:1.20.1-alpine
- 备份镜像(可省略)
docker save nginx:1.20.1-alpine -o nginx:1.20.1-alpine.tar
- 导入镜像(可省略)
docker load -i nginx:1.20.1-alpine.tar
- 运行镜像
docker run -itd --name nginx -p 80:80 nginx:1.20.1-alpine #进入容器 docker exec -it nginx sh #配置文件目录 cat /etc/nginx/nginx.conf #查看html目录 cd /usr/share/nginx/html
- 测试
访问:http://192.168.200.128/
七、mysql安装
- 官网地址
https://hub.docker.com/_/mysql
- 拉取镜像
docker pull mysql:5.7.34
- 备份(略)
- 运行镜像
-e , --env=[]: 设置环境变量,容器中可以使用该环境变量
官网中给出进入容器的第三种方式bash(前边有/bin/bash,sh) 向my.cnf文件中追加相关配置项docker run -itd --name mysql --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.34 --character-set-server=utf8 --collation-server=utf8_general_ci
- 测试
#进入容器 docker exec -it mysql bash #登录mysql mysql -uroot -p #输入密码 123456 use mysql; show databases; #退出mysql exit cat /etc/issue #返回信息:Debian GNU/Linux 10 \\n \\l #查看日志 docker logs mysql #退出容器 exit
八、zookeeper安装
- 官网地址
https://hub.docker.com/_/zookeeper
- 拉取镜像
docker pull zookeeper:3.7.0
- 备份(略)
- 运行镜像(单机版)
docker run -itd --name zookeeper --restart always -p 2181:2181 zookeeper:3.7.0 #进入容器 docker exec -it zookeeper /bin/bash cat /etc/issue #返回信息:Debian GNU/Linux 10 \\n \\l
- ZooInspector测试
#下载地址 https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip #进入目录ZooInspector\\build,运行zookeeper-dev-ZooInspector.jar #点击左上角连接按钮,输入zk 服务地址:ip或者主机名:2181 #点击OK,即可查看ZK节点信息 java -jar zookeeper-dev-ZooInspector.jar
九、 ActiveMQ安装
- 官网地址
https://hub.docker.com/r/webcenter/activemq
- 拉取镜像
在这里插入代码片docker pull webcenter/activemq:5.14.3
- 备份(略)
- 运行镜像(单机版)
61616为ActiveMQ的外部访问端口, 8161为web页面访问端口docker run -itd --name activmq --restart always -p 61616:61616 -p 8161:8161 webcenter/activemq:5.14.3 #进入容器 docker exec -it activmq /bin/bash cat /etc/issue #返回信息: Ubuntu 15.10 \\n \\l
- 测试
访问管理界面
登入(admin/admin)http://192.168.200.128:8161/
以上是关于Docker安装及操作的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu14.04环境下利用docker搭建solrCloud集群
docker系列使用非root用户安装及启动docker(rootless模式运行)