上午
回顾
1
、主从复制(高可用)
2
、传统的主从复制
3
、
gtids
事务型的主从复制
4
、注意
1
)
server_id
唯一
2
)
8.X
版本需要
get_ssl_pub_key
3
)
5.X
不需要
4
)
change master to
5
)
stop | start slave
5
、非交互
import pymysql
conn=pymysql.connect(host=xxx,user=xxx,password=xxx,port=xx,database=xxxx)
cursor=conn.cursor()
sql="insert | delete | update | select..."
cursor.execute(sql)
#
查询不需要提交,直接使用
fectch
就可以得到结果
#
增删改需要提交
conn.commit()
mysql -h10.0.0.21 << EOF
create datase if not exists test charset utf8mb4;
use test;
create tables...
quit
EOF
6
、数据库的负载均衡 阿里巴巴的
mycat
vim
/usr/local/mycat/conf/server.xml
对外的账户 密码 数据库
<user
name
=
"li"
>
<property
name
=
"password"
>li</property>
<property
name
=
"database"
>test>/property>
</user>
vim
/usr/local/mycat/conf/schema.xml
<mycat:schema>
<schema
name
=
"test"
dataNode
=
"abc"
></schema>
<dataNode
name
=
"abc"
dataHost
=
"efg"
database
=
"test"
/>
<dataHost
name
=
"efg"
......>
<writeHost
host
=
"hs01"
url
=
"10.0.0.11:3306"
user
=
"li"
password
=
"li"
>
<readHost
host
=
"hs02"
url
=
"10.0.0.12:3310"
user
=
"li"
password
=
"li"
/>
<readHost
host
=
"hs02"
url
=
"10.0.0.13:3310"
user
=
"li"
password
=
"li"
/>
</writeHost>
</dataHost>
</mycat:schmel>
7
、如果出现启动异常,
8066
端口没有打开,可以检查两个日志文件
vim /usr/local/mycat/logs/wrapper.log
vim /usr/local/mycat/logs/mycat.log
8
、后端服务器
java | python | php | asp
版本:正常市场
jdk8
,但是由于
spring6.X
框架必须要求
17
以上的版本,
jdk
版本比较多,找开发者要
版本
-jdk
vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
souce /etc/profile
使用
jar
包启动服务
#
配置
application.properties | yml
#
修改
yml
中的端口或者数据源
url=jdbc:msyql://ip:port/databasename
username=dbuser
password=dbpass
java -jar eleme.xxxx.jar
9
、负载均衡技术
lvs
dr
模式
1
、挂载
vip
(对外)
ens33
:
0
ifconfig ens33
:
0 vipXXXX broadcast=vipxxxx netmast=255.255.255.255 up
route add vipxxxx dev ens33:0
yum -y install ipvsadm
#
添加规则
ipvsadm -A -t vipxxxx:port -s rr
ipvsadm -a -t vipxxxx:port -r ripxxxx -g
ipvsadm -a -t vipxxxx:port .....
rs
主机
ifconfig lo:0 vipxxxx broadcast=vipxxxx netmast=255.255.255.255 up
route add vipxxxx dev lo:0
抑制接受请求
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
10
、
nginx
配置代理
负载均衡
http {
upstream javagroup{
server ip:port weight=99;
server ip:port weight=1;
}
server {
location ~/ {
pass_proxy http://javagroup:
}
}
}
下午
⼀、了解
Docker
1
、
Docker
是什么?
Docker
是⼀个开源的应⽤容器引擎,可以实现虚拟化,完全采⽤
“
沙 盒
”
机制,容器之间不会存在任
何接⼝。
Docker
通过
Linux Container
(容器)技术将任意类型的应⽤进⾏包 装,变成⼀种轻量级、标准
化、可移植、⾃管理的组件。在包装应⽤的同时,可连带该应⽤的依赖和环境⼀并进⾏打包,所以可以
将这种
“
包
”
移植到任意环境去运⾏,省去兼容性的问题。
2
、
Docker
和虚拟机的区别

Docker
和虚拟机在以下⼋个⽅⾯存在差异:
1
、启动速度:
Docker
启动速度⾮常快,属于秒级别,⽽虚拟机通常需要⼏分钟去启动。
2
、资源消耗:
Docker
需要的资源更少,它直接运⾏在宿主机的内核上,以⼀系列进程的结合形式
存在。⽽虚拟机则需要消耗更多的资源,因为它在操作系统级别进⾏虚拟化。
3
、轻量级:
Docker
更轻量,它的架构可以共⽤⼀个内核与共享应⽤程序库,所占内存极⼩。⽽虚
拟机则相对较重,需要消耗更多的内存。
4
、隔离性:虚拟机可以实现系统级别的隔离,⽽
Docker
则属于进程之间的隔离,隔离性相对较
弱。
5
、安全性:
Docker
的安全性也更弱。
6
、可管理性:
Docker
的集中化管理⼯具还不算成熟。
7
、兼容性:开发⼈员不需要关系具体是哪个
Linux
操作系统,基本市⾯上主流系统都可使⽤
Docker
。
8
、数据持久性:
Docker
⽆法存储数据,当容器重启后,数据会消 失;⽽虚拟机可以存储各种数
据,包括⽇志、数据库等。
3
、
Docker
解决的问题
(
1
)系统环境不⼀致问题
环境不同时可能会出现的环境问题:

使⽤
docker
容器时:

将简易的操作系统、编写好的代码、部署完成的应⽤服务配置等打包放到容器内,再转到鲸⻥上,
由鲸⻥送到服务器,此时,⽆论是什么运⾏环境,
docker
容器都可以运⾏。
(
2
)应⽤隔离问题
Linux
是⼀个⽀持多⽤户的操作系统,正因如此,可能会造成⽤户使 ⽤时,互相之间占⽤资源过
多,以致于服务器资源空间不⾜,⽽
docker
具有隔离性,可以在启动时就限定好硬件的使⽤率,当某个容器到达或超过限定的阈值时,就会被 kill
,此时需要运维⼈员对其 进⾏调试。
4
、
Docker
的优缺点
(
1
)优点
1
、 体积⼩:减⼩系统的开销值,⼀台主机可以运⾏上千个容器。
2
、启动迅捷:更快速的交付和部署,
docker
容器 ,⽐传统虚拟机要快很多,
docker
核⼼解决的问
题就是利⽤容器实现
VM
类似的功能。
3
、操作⽅便:通过配置
dockerfile
便⽀持灵活的⾃动化创建和部署。
4
、更轻松的扩展:可以实现更简单的、更可靠的迁移,避免了兼容 性等问题。
5
、更强的可扩展性和可移植性。
(
2
)缺点
1
、安全问题:如果没有正确配置,⼀个容器中的恶意代码可能会影响到主机上的其他容器以及主机本身的安全。
2
、存储问题:当使⽤⼤量容器时,存储和管理容器映像可以变得⾮常困难。这可能需要使⽤分布式存储或其他解决⽅案来管理⼤量容器的存储。
3
、性能问题:在某些情况下,容器和虚拟机相⽐会导致性能损失。 这些性能问题越来越少,但是
仍然需要考虑。
4
、 ⽹络问题:
Docker
可能会在⽹络配置上存在⼀些问题,这可能需要更多的时间来诊断和解决。
5
、 复杂性:
Docker
是⼀个⾮常灵活的系统,但这同时也让它更加复杂。⻓时间使⽤
Docker
会产
⽣⼤量的脚本和配置⽂件,这些可能变得难以维护。
6
、资源消耗:使⽤
Docker
必须占⽤⼀些资源,包括
CPU
、内存、磁盘等等。如果运⾏容器的主机资源不⾜,可能会导致性能 问题。
7
、学习曲线:
Docker
是⼀个相对新的技术,相⽐传统环境需要⼀ 定的学习曲线。需要了解
Docker基本概念、命令和配置⽂件等。
8
、需要花费时间配置和管理:使⽤
Docker
需要花时间配置和管理容器集群和应⽤程序。需要配置每个容器,管理 Jenkins
、
Kubernetes
等运⾏
Docker
容器的⼯具。
9
、映像构建复杂:构建
Docker
映像需要按照特定格式编写
Dockerfile
脚本,需要遵循⼀定的规范
和流程,这可能需要更多的时间和精⼒。
5
、
Docker
架构

1
、⽤
docker pull
命令从
hub.docker.com
官⽹上下载
images (
镜 像
)
。
2
、可以⽤
docker save
命令将镜像保存到本地
tar
⽂件,也可以⽤
docker load
命令将本地
tar
⽂
件导⼊镜像。
3
、 可以⽤
docker build
构建
Dockerfile
镜像。
4
、可以⽤
docker run
和
docker create
将镜像运⾏成
container (
容器
)
,容器内可以安装所需要的
APP
。
5
、 可以⽤
docker commit/export
将容器做成镜像反复的使⽤。
6
、可以将⾃⼰制作的镜像发布到
hub.docker.com
⽹站,需要注册账号。
6
、
Docker
核⼼概念
1
、镜像(
images
):⼀个⾯向
docker
容器引擎的只读模板,也是容器的基础,类似于
iso
镜像⽂件。
2
、容器(
container
):基于镜像所创建的虚拟实例,相当于⼀个简易的
Linux
环境,可启停,且
多个容器之间互相隔离。
3
、仓库(
Repository
):集中存放
docker
镜像的位置,可使⽤
docker pull
或
push
命令下载或
上传到私有或公有仓库。
4
、仓库注册服务器(
registry
):存放仓库的地⽅,如果没有私有仓库,则使⽤公共仓库
docker
hub
。
7
、
Docker
特性
⽂件系统隔离:每个进程容器运⾏在⼀个完全独⽴的根⽂件系统⾥。
资源隔离:实现不同的容器的资源配额和调度,
cgroup
。
⽹络隔离:每个进程容器运⾏在⾃⼰的⽹络空间,拥有虚拟接⼝和
IP
地址。
⽇志记录:
Docker
将收集到和记录的每个进程容器的标准流 (
stdout/stderr/stdin
),⽤于实时检
索或者批量检索。
变更管理:容器⽂件系统的变更可以提交到新的镜像中,并可重复使⽤以创建更多的容器。
交互式
shell
:
Docker
可以分配⼀个虚拟终端并且关联到任何容器的标准输出上,例如运⾏⼀个⼀次性交互shell
。
⼆、安装
Docker
1
、
Docker
要求

2
、安装
Docker
[root@docker ~]
# cat << EOF | tee /etc/modules-load.d/k8s.conf
> overlay
> br_netfilter
> EOF
overlay
br_netfilter
#
加载
overlay
内核模块
[root@docker ~]
# modprobe overlay
#
加载
br_netfilter
内核模块
[root@docker ~]
# modprobe br_netfilter
[root@docker ~]
# cat /etc/modules-load.d/k8s.conf
overlay
br_netfilter
[root@docker ~]
# cat << EOF | tee /etc/sysctl.d/k8s.conf
> net.bridge.bridge-nf-call-iptables
=
1
> net.bridge.bridge-nf-call-ip6tables
=
1
> net.ipv4.ip_forward
=
1
> EOF
[root@docker ~]
# sysctl --system
[root@docker ~]
# yum -y install yum-utils device-mapper-persistent-data lvm2
#
添加阿
⾥
云
yum
源
[root@docker ~]
# yum-config-manager --add-repo
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@docker ~]
# yum -y install docker-ce docker-ce-cli containerd.io
docker-buildx-plugin docker-compose-plugin
#
启动
docker
守护进程
[root@docker ~]
# systemctl start docker
#
查看本地镜像
[root@docker ~]
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
overlay
:是⼀种⽂件系统层叠技术,常⽤于容器化平台
(
⽐如
Docker)
中。它允许将多个⽂件系统叠加在⼀起,从⽽创建⼀个统⼀可⻅的⽂件系统。通过加载 overlay
模块,可以在
Linux
系统中使⽤overlay ⽂件系统,并且它将提供⼀些额外的功能,⽐ 如联合挂载、⽂件层叠等。
br_netfilter
:
Linux
内核中的⼀个模块,它提供了桥接设备
(bridge device)
和⽹络过滤器
(netfilter)
之间的集成。它允许在桥接设备上使⽤⽹络过滤器功能,如防⽕墙规则、⽹络地址转换
(NAT)
等。通过加载 br_netfilter
模块,你可以在
Linux
系统中的桥接设备上应⽤⽹络过滤规则对⽹络流量进⾏管理和控制。
device-mapper-persistent-data
:⼀个
Linux
内核模块,它为
Device Mapper
设备提供持久存储功
能。
DMPD
提供了⼀个⽤于存储映射关系的数据库,使得
Device Mapper
可以持久化存储映射数据,以便在系统重新启动后仍然可以恢复之前的映射关系。
lvm2
:
Linux
系统下的逻辑卷管理⼯具,
LVM
的升级版,它是对磁盘分区进⾏管理的⼀种机制,建
⽴在硬盘和分区之上的⼀个逻辑层,⽤来提⾼磁盘管理的灵活性。
三、使用
docker
1
、启动服务获得镜像
#
在仓库中查找
centos
的镜像
[root@docker ~]
# docker search centos
#
配置
docker
镜像站
[root@docker ~]
# vim /etc/docker/daemon.json
{
"registry-mirrors"
: [
"https://do.nark.eu.org"
,
"https://dc.j8.work"
,
"https://docker.m.daocloud.io"
,
"https://dockerproxy.com"
,
"https://docker.mirrors.ustc.edu.cn"
,
"https://docker.nju.edu.cn"
]
}
#
重启
docker
[root@docker ~]
# systemctl restart docker
#
从仓库中拉取
centos
的镜像
[root@docker ~]
# docker pull centos
#
查看本地镜像
[root@docker ~]
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764
2
years ago 231MB
2
、创建运行容器
#
第一次创建容器
[root@docker ~]
# docker run -it --name=c0 centos:latest /bin/bash
#
配置阿里云的
yum
仓库
[root@41c9a7796fde /]
# cd /etc/yum.repos.d/
[root@41c9a7796fde yum.repos.d]
# rm -rf *.repo
[root@41c9a7796fde yum.repos.d]
# curl -o /etc/yum.repos.d/CentOS-Base.repo
https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@41c9a7796fde yum.repos.d]
# yum clean all && yum makecache
[root@41c9a7796fde yum.repos.d]
# cd
#
安装
httpd
[root@41c9a7796fde ~]
# yum -y install net-tools
[root@41c9a7796fde ~]
# yum -y install httpd
[root@41c9a7796fde ~]
# yum -y install iproute
[root@41c9a7796fde ~]
# ps
PID TTY TIME CMD
1
pts/0
00
:00:00
bash
81
pts/0
00
:00:00
ps
[root@41c9a7796fde ~]
# ifconfig
eth0:
flags
=
4163
<UP,BROADCAST,RUNNING,MULTICAST> mtu
1500
inet
172
.17.0.2 netmask
255
.255.0.0 broadcast
172
.17.255.255
#
显示系统的运行时间、当前登录的用户数量以及系统的平均负载情况
[root@41c9a7796fde ~]
# uptime
06
:37:00 up
33
min,
0
users, load average:
0
.00,
0
.01,
0
.02
#
查看基于
Red Hat
的系统的发行版本信息
[root@41c9a7796fde ~]
# cat /etc/redhat-release
CentOS Linux release
8
.4.2105
3
、在容器中配置
httpd
服务并在外部主机中访问
#
修改
httpd
的配置文件
[root@41c9a7796fde ~]
# echo "docker_httpd_server" > /var/www/html/index.html
#
表明当前的容器环境不是以
systemd
作为初始化系统启动的,所以无法使用
systemctl
启动服务
[root@41c9a7796fde ~]
# systemctl start httpd
System has not been booted with systemd as init system (PID
1
). Can
't
operate.
Failed to connect to bus: Host is down
#
在命令行中直接启动
Apache
服务
[root@41c9a7796fde ~]
# httpd -k start
# Apache HTTP
服务器在启动时无法可靠地确定服务器的完全限定域名,因此使用了
IP
地址
172.17.0.2
AH00558: httpd: Could not reliably determine the server
's fully qualified
domain name, using 172.17.0.2. Set the '
ServerName
' directive globally to
suppress this message
[root@41c9a7796fde ~]
# curl localhost
docker_httpd_server
[root@41c9a7796fde ~]
# curl http://localhost:80
docker_httpd_server
[root@41c9a7796fde ~]
# curl http://172.17.0.2:80
docker_httpd_server
新开一终端:
[root@docker ~]
# curl http://172.17.0.2:80
docker_httpd_server
#
一旦退出容器,将无法访问到容器的
httpd
服务,再次进入到容器中,服务已正常关闭,需要重启服务才能正常工作
4
、非正常退出容器(容器继续运行,服务继续工作)
#
在当前系统中查找与
“docker”
相关的进程信息
[root@docker ~]
# ps -aux | grep docker
# Docker
守护进程,进程
ID
为
1350
,由
root
用户启动。它正在监听文件描述符(
-H fd://
)并与
containerd
进行交互(
--containerd=/run/containerd/containerd.sock
)。
root
1350 0
.0
6
.7
1635992 32612
? Ssl
14
:15
0
:01
/usr/bin/dockerd
-H
fd://
--containerd
=
/run/containerd/containerd.sock
#
执行
“ps -aux | grep docker”
命令自身产生的进程,进程
ID
为
2445
,也是由
root
用户在终端
(
pts/0
)中启动,用于在输出结果中过滤出包含
“docker”
的行。
root
2445 0
.0
0
.2
112724 964
pts/0 S
+
15
:06
0
:00
grep
--
color
=
auto docker
#
启动名字为
c0
的容器
[root@docker ~]
# docker start c0
#
在正在运行的名为
“c0”
的容器中启动一个交互式的
Bash shell
[root@docker ~]
# docker exec -it c0 /bin/bash
#
将
c0
的终端挂载附加到当前的终端上
[root@docker ~]
# docker attach c0
[root@41c9a7796fde /]
#
#
期望退出,服务继续运行
curl
+
p
+
q
[root@41c9a7796fde /]
# read escape sequence
#
列出当前正在运行的
Docker
容器的相关信息
[root@docker ~]
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
41c9a7796fde centos:latest
"/bin/bash"
About an hour ago Up
33
minutes c0
5
、关闭
docker
守护进程
#
查看
docker
状态
[root@docker ~]
# systemctl status docker
#
查看版本
[root@docker ~]
# docker version
#
关闭
docker
守护进程
[root@docker ~]
# systemctl stop docker
Warning: Stopping docker.service, but it can still be activated
by:docker.socket
# docker
守护进程已关闭,无法进入容器中
[root@docker ~]
# docker attach c0
You cannot attach to a stopped container,
start
it first
6
、套接字的应用
#
套接字文件为
/tmp/mysql.sock
[root@mysql_c ~]
# vim /usr/local/mysql/my.cnf
[mysqld]
basedir
=
/usr/local/mysql
datadir
=
/usr/local/mysql/data
socket
=
/tmp/mysql.sock
port
=
3310
log-error
=
/usr/local/mysql/data/db01-slave.err
relay-log
=
/usr/local/mysql/data/relaylog
server-id
=
11
character_set_server
=
utf8mb4
# mysql
服务未开启
[root@mysql_c ~]
# netstat -lnput | grep mysql
#
无
sock
文件
[root@mysql_c ~]
# ls -lh /tmp/
总用量
0
drwx------.
3
root root
17 8
月
22 15
:30 systemd-private-
2aed4145d94f4730bb8da071dc67b409-chronyd.service-tcRXAE
drwx------.
2
root root
6 8
月
21 15
:35 vmware-root
#
开启
mysql
服务
[root@mysql_c ~]
# service mysql57 start
Starting MySQL.. SUCCESS!
#
查看
mysql
文件是否开启成功
[root@mysql_c ~]
# netstat -lnput | grep mysql
tcp6
0 0
:::3310 :::* LISTEN
1477
/mysqld
#
出现
sock
⽂
件
[root@mysql_c ~]
# ls -lh /tmp/
总用量
4
.0K
srwxrwxrwx.
1
mysql mysql
0 8
月
22 15
:31 mysql.sock
-rw-------
.
1
mysql mysql
5 8
月
22 15
:31 mysql.sock.lock
drwx------.
3
root root
17 8
月
22 15
:30 systemd-private-
2aed4145d94f4730bb8da071dc67b409-chronyd.service-tcRXAE
drwx------.
2
root root
6 8
月
21 15
:35 vmware-root
7
、
docker
套接字的配置(设置允许远程管理)
# docker
的守护进程已经关闭,查看
docker
的套接字(时间不对)
[root@docker ~]
# ls -lh /var/run/
srw-rw----.
1
root docker
0 8
月
22 14
:15 docker.sock
#
开启
docker
的守护进程,时间还是不对
[root@docker ~]
# systemctl start docker
[root@docker ~]
# ls -lh /var/run/
srw-rw----.
1
root docker
0 8
月
22 14
:15 docker.sock
#
查看
docker
服务文件
[root@docker ~]
# vim /usr/lib/systemd/system/docker.service

#
修改
daemon.json
文件
[root@docker ~]
# vim /etc/docker/daemon.json
{
"registry-mirrors"
: [
"https://do.nark.eu.org"
,
"https://dc.j8.work"
,
"https://docker.m.daocloud.io"
,
"https://dockerproxy.com"
,
"https://docker.mirrors.ustc.edu.cn"
,
"https://docker.nju.edu.cn"
],
#
指定
Docker
守护进程的监听地址
"hosts"
: [
#
表示
Docker
守护进程将在所有网络接口上监听
TCP
连接,端口号为
2375
"tcp://0.0.0.0:2375"
,
"unix:///var/run/docker.sock"
]
}
#
修改
docker
服务文件
[root@docker ~]
# vim /usr/lib/systemd/system/docker.service
13
ExecStart
=
/usr/bin/dockerd
#
开启
docker
守护进程,发现启动不了
[root@docker ~]
# systemctl start docker.service
Warning: docker.service changed on disk. Run
'systemctl daemon-reload'
to
reload units.
Job
for
docker.service failed because the control process exited with error
code. See
"systemctl status docker.service"
and
"journalctl -xe"
for
details.
#
加载
daemo.json
文件
[root@docker ~]
# systemctl daemon-reload
#
启动
docker
守护进程,成功
[root@docker ~]
# systemctl start docker.service
Warning: docker.service changed on disk. Run
'systemctl daemon-reload'
to
reload units.
#
查看
docker
服务是否启动(要允许远程连接,需要有一个服务,使用端口体现)
[root@docker ~]
# netstat -lntup | grep docker
tcp6
0 0
:::2375 :::* LISTEN
3198
/dockerd
#
查看
docker.sock
文件是否更新成功(
sock
套接字),成功
[root@docker ~]
# ll /var/run/docker.sock
srw-rw----.
1
root docker
0 8
月
22 16
:14 /var/run/docker.sock
#
通过指定
IP
地址为
“10.0.0.100”
的
Docker
守护进程来查看镜像列表(远程管理)
[root@docker ~]
# docker -H 10.0.0.100 images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764
2
years ago 231MB
8
、查看
dockers
的帮助信息,选项的应用
[root@docker ~]
# docker --help
Common Commands:
run Create and run a new container from an image
exec Execute a command
in
a running container
ps
List containers
build Build an image from a Dockerfile
pull Download an image from a registry
push Upload an image to a registry
images List images
login Log
in
to a registry
logout Log out from a registry
search Search Docker Hub
for
images
version Show the Docker version information
info Display system-wide information
Management Commands:
builder Manage builds
buildx* Docker Buildx
compose* Docker Compose
container Manage containers
context Manage contexts
image Manage images
manifest Manage Docker image manifests and manifest lists
network Manage networks
plugin Manage plugins
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
......
#
查看启动的容器
[root@docker ~]
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#
查看全部的容器
[root@docker ~]
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
41c9a7796fde centos:latest
"/bin/bash"
2
hours ago Exited (0) About
an hour ago c0
#
启动名字为
c0
的容器
[root@docker ~]
# docker start c0
c0
#
进入
c0
容器中
[root@docker ~]
# docker attach c0
#
开启
httpd
服务
[root@41c9a7796fde /]
# httpd -k start
AH00558: httpd: Could not reliably determine the server
's fully qualified
domain name, using 172.17.0.2. Set the '
ServerName
' directive globally to
suppress this message
#
访问当地
httpd
服务
[root@41c9a7796fde /]
# curl localhost
docker_httpd_server
#
非正常退出容器,容器继续正常运行
[root@41c9a7796fde /]
# read escape sequence
#
查看运行中的容器
[root@docker ~]
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
41c9a7796fde centos:latest
"/bin/bash"
2
hours ago Up About a minute
c0
#
显示有关
Docker
安装和当前系统配置的详细信息
[root@docker ~]
# docker info
Client: Docker Engine
-
Community
Version:
26
.1.4
Context: default
Debug Mode:
false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.14.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.27.1
Path: /usr/libexec/docker/cli-plugins/docker-compose