attach #当前 she11 下 attach 连接指定运行镜像
build # 通过 Dockerfile 定制镜像
commit # 通过 Dockerfile 定制镜像
[root@localhost ~]# netstat -antulp/查看端口号/
docker system prune -a /删除过期的历史镜像/
cp #从容器中拷贝指定文件或者目录到宿主机中
create # 创建一个新的容器,同 run,但不启动容器
diff # 查看 docker 容器变化
events # 从 docker 服务获取容器实时事件
exec # 在已存在的容器上运行命令
export # 导出容器的内容流作为一个 tar 归档文件[对应improt
history #展示一个镜像形成历史
images # 列出系统当前镜像
import # 从tar包中的内容创建一个新的文件系统映像【exprot】
info #显示系统相关信息
inspect # 查看容器详细信息
search #查看又没有下载的镜像
kill # ki11 指定 docker 容器
load # 从一个 tar 包中加载一个镜像[对应 save]
login # 注册或者登陆一个 docker 源服务器
logout # 从当前 Docker registry 退出
1ogs # 输出当前容器日志信息
port # 查看映射端口对应的容器内部源端口
pause # 暂停容器
ps # 列出容器列表
pull #从docker镜像源服务器拉取指定镜像或者库镜像
push # 推送指定镜像或者库镜像至docker源服务器
restart # 重启运行的容器
rm # 移除一个或者多个容器
rmi # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可以或者-f强行删除
run #创建一个新的容器并运行一个命令
save # 保存一个镜像为一个 tar 包[对应 oad]
search #在 docker hub 中搜索镜像
start # 启动容器
stop #停止容器
tag #给源中镜像打标签
top # 查看容器中运行的进程信息
unpause # 取消暂停容器
version # 查看 docker 版本号
wait # 截取容器停止时的退出状态值
Docker容器
[root@localhost ~]# yum install -y yum-utils
/添加阿里云存储库/
yum-config-manager
–add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
/安装docker/
yum update
sudo yum install -y yum-utils ;
sudo yum-config-manager --add-repo
https://download.docker.com/linux/centos/docker-ce.repo/安装缺失的公钥/
yum install docker-ce docker-ce-cli containerd.io/安装DOCKER/
[root@localhost ~]# docker –version/查看版本/
Docker version 24.0.7, build afdd53b;
Docker文件存放位置:[root@localhost lib]# cd /var/lib/docker
启动docker
[root@localhost ~]# systemctl start docker/启动docker/
docker实列
[root@localhost docker]# docker run hello-world;/在容器中运行hello-world程序/
[root@localhost docker]# docker images/列出了所有本地可用的 Docker 镜像/
1、卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
2、删除资源rm -rf /var/lib/docker
阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://qiyb9988.mirror.aliyuncs.com”] /换成自己阿里云镜像地址/
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker search搜索镜像
[root@localhost docker]# docker search mysql /* docker search搜索镜像*/
[root@localhost docker]# docker search mysql --filter=STARS=3000/根据镜像大小筛选/
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 14644 [OK]
mariadb MariaDB Server is a high performing open sou… 5586 [OK]
docker pull 下载镜像
[root@localhost docker]# docker pull mysql
Using default tag: latest/下载最新的镜像/
[root@localhost docker]# docker pull mysql mysql:8.0 /指定下载的版本/
[root@localhost docker]# docker pull mysql
Using default tag: latest #如果不写 tag(版本号),默认是最新的 latest
latest: Pulling from library/mysql
8e0176adc18c: Pull complete 分层下载,docker iamge的核心 联合文件系统
2d2c52718f65: Pull complete
d88d03ce139b: Pull complete
4a7d7f11aa1e: Pull complete
ce5949193e4c: Pull complete
f7f024dfb329: Pull complete
5fc3c840facc: Pull complete
509068e49488: Pull complete
cbc847bab598: Pull complete
942bef62a146: Pull complete
Digest: sha256:1773f3c7aa9522f0014d0ad2bbdaf597ea3b1643c64c8ccc2123c64afd8b82b1 #签名
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest #真实地址
docker rmi –f删除镜像
[root@localhost docker]# docker images /查看镜像/
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql latest a3b6608898d6 4 weeks ago 596MB
mysql 8.0 96bc8cf3633b 4 weeks ago 582MB
hello-world latest 9c7a54a9a43c 6 months ago 13.3kB
[root@localhost docker]# docker rmi -f a3b6608898d6/*删除镜像 a3b6608898d6镜像ID */
Untagged: mysql:latest
Untagged: mysql@sha256:1773f3c7aa9522f0014d0ad2bbdaf597ea3b1643c64c8ccc2123c64afd8b82b1
Deleted: sha256:a3b6608898d600759effd58768b7213bb44a6d58ab3a53495dd88e6b2042a8a4
Deleted: sha256:a6316a7b5ef7408c536c06c5f20e6138cd8725c7ed3fc895ec2540d28f596d87
容器命令
说明 : 我们有了镜像才可以创建客器,linux,下载一个 centos 镜像来测试学习
[root@localhost docker]# docker pull centos /下载centos 镜像/
新建容器并启动
docker run[可选参数]
#参数说明
–name=”Name” 容器名字 tomcat01\ tomcat02 ,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 –p 8080:8080
-p ip :主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P 随机指定端口
[root@localhost docker]# docker run -it centos /bin/bash /运行docker run 进入centos控制台/
[root@92935d6d0964 /]# ls
[root@92935d6d0964 ~]# exit /退出容器/
快捷键:Ctrl + p + q #容器不停止退出
docker run -d --name my_centos_container centos
在这个命令中:
• -d选项表示在后台运行容器。
• --name选项用于给容器指定一个名称,这里是"my_centos_container"。
• centos是你要运行的镜像的名称。
删除容器
docker rm 容器id 删除指定的容器,不能删除正在运行的容器,如果要强制删除#rm -f
docker rm -f $(docker ps -aq) # 删除所有的容器
docker ps -a –q l xargs docker rm # 删除所有的容器
*删除容器后才可以删除镜像
启动和停止容器的操作
docker start 容器id # 启动容器
docker restart 容器id # 重启容器
docker stop 容器id # 停止当前正在运行的容器(docker ps 查看当前运行的容器)
docker kil] 容器id # 强制停止当前容器#
常用其他命令:
后台启动容器
命令 docker run -d 镜像名!
[root@kuangshen /]# docker run -d centos
问题docker ps,发现 centos 停止了
#常见的坑: docker 容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止
nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序
了
查看日志
#命令
docker logs -tf –tail[页数] 容器ID
#[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
48eac879edd8 centos "/bin/sh –c
显示日志
-tf #显示日志
–tail number #要显示日志条数
#[root@localhost ~]# docker logs -tf --tail 10 751cf4144344
查看容器中进程信息ps
#命令:docker top 容器id
[root@localhost ~]# docker top 48eac879edd8
UID PID PPID
root 6440 6420
查看镜像的元数据
命令:docker inspect 容器ID
#测试
[root@localhost ~]# docker inspect 751cf4144344
进入当前正在运行的容器
命令(一):docker exec –it 容器id bashShell #进入容器后开启新的终端
查看运行的容器:docker ps
命令(二):docker attach 容器id #进入容器正在执行的终端,不会启动新的进程
docker中安装nginx
[root@localhost home]# docker search nginx /查看是否有镜像/
[root@localhost home]# docker pull nginx /下载镜像/
[root@localhost home]# docker images /查看镜像/
[root@localhost home]# docker run -d --name nginx -p 3344:80 nginx /* 运行容器- d 后台运行 --name 容器名字 3344连接端口 80 nginx 的端口*/
[root@localhost ~]# docker start nginx /启动nginx/
[root@localhost ~]# docker exec -it nginx /bin/bash/进入正在运行的服务终端/
root@0ba1d8341c5e:/# whereis nginx /查看nginx位置/
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@0ba1d8341c5e:/# cd /etc/nginx/查看nginx配置/
root@0ba1d8341c5e:/etc/nginx# ls
conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
#docker nginx 映射 主机访问docker(ens33 宿主机网卡 ifcongfig)
[root@localhost ~]# docker inspect nginx | grep IPAddress/查看nginx ip地址/
[root@localhost ~]# sudo iptables -I DOCKER-USER -i ens33 -o “3344” -p tcp --dport “80” -j ACCEPT /宿主机3344端口映射docker80端口
这个命令是在iptables防火墙中添加一条规则,允许从ens33网卡(输入接口)到3344端口的TCP流量通过。这是在Docker容器外部对网络流量的控制。/
[root@localhost ~]# sudo iptables -D DOCKER-USER -i ens33 -o “3344” -p tcp --dport “80” -j ACCEPT/删除3344端口号/
sudo: 这是一个命令前缀,表示以超级用户(root)的身份执行命令。这需要输入管理员密码。
iptables: 这是Linux系统中用于配置防火墙规则的一个工具。它允许用户定义一系列的规则来决定如何处理进出的网络数据包。
-D: 这是一个选项,用于从指定的规则链中删除一条匹配的规则。
DOCKER-USER: 这是规则链的名称,表示这些规则是针对Docker容器用户的。
-i: 这是选项,用于指定数据包进入系统的接口。在这里,ens33是接口的名称。
-o: 这是选项,用于指定数据包从系统出去的接口。在这里,3345是接口的名称。
-p: 这是选项,用于指定网络协议,这里是tcp。
–dport: 这是选项,用于指定目标端口,这里是端口80。
-j: 这是选项,用于指定规则的动作,这里是ACCEPT,表示接受进入的流量。
[root@localhost ~]# sudo systemctl restart docker/重启docker服务/
[root@localhost ~]# docker start nginx /重启nginx/
docker安装mysql
[root@localhost ~]# docker pull mysql
[root@localhost ~]# docker run --name some-mysql
-v /home/frank/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Root@123 -p 8888:3306 -d mysql/MySQL文件存放在服务器上/
[root@localhost mysql]# docker exec -it a562dfeda2c9 /bin/bash/进入mysql终端/
[root@localhost mysql]# docker exec -it some-mysql /bin/bash
bash-4.4# mysql -u root -p Enter password: Root@123 /登录数据库/
[root@localhost mysql]# sudo iptables -I DOCKER-USER -i ens33 -o “8888” -p tcp --dport “3306” -j ACCEPT /防火墙允许访问数据库/
mysql> SHOW VARIABLES LIKE ‘character_set%’;(查看字符集)
[root@lovemq ~]# sudo find / -name my.cnf 2>/dev/null/查找mysql配置文件地址/
[root@lovemq ~]# vim /var/lib/docker/overlay2/7651741f3e5340cc7f390a8a0104729c596cb611e1a37fda1d92d38855046c90/diff/etc/mysql/my.cnf(修改字符集)
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
/在my.cnf中添加上述配置,修改字符集/
[root@localhost mysql]# sudo systemctl restart docker/重启/
docker安装Oracle
[root@localhost ~]# sudo iptables -I DOCKER-USER -i ens33 -o “1000” -p tcp --dport “1521” -j ACCEPT /防火墙开放1000端口/
ap[root@localhost ~]# sudo yum update && sudo yum install -y rlwrap/防止乱码/
/*docker 开始
[root@localhost ~]# [root@localhost ~]# docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g/安装11g oracle/
[root@localhost ~]# docker run -p 1521:1521 --restart=always --name oracle_11g -v /opt/oracle_data:/home/oracle/app/oracle/oradata/mydata registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
/运行oracle/
[root@localhost ~]# docker exec -it oracle_11g bash
[oracle@b036c969b829 /]$ su root /用oracle用户登录/
Password: helowin
[root@b036c969b829 etc]# vi profile
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=
O
R
A
C
L
E
H
O
M
E
/
b
i
n
:
ORACLE_HOME/bin:
ORACLEHOME/bin:PATH/在文件末尾添加/
[root@b036c969b829 etc]# source /etc/profile/刷新/
[root@b036c969b829 etc]# ln -s KaTeX parse error: Expected 'EOF', got '#' at position 65: …eaaadc14a7ef /]#̲ su - oracle … sqlplus / as sysdba /进入oracle终端 刷新 source /etc/profile/
SQL> alter user system identified by 123456;
SQL> alter user sys identified by 123456;
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;/在Oracle数据库中更改密码策略设置的它把密码的生命周期设置为无限/
exit
[oracle@eaaadc14a7ef ~]$ sqlplus
Enter user-name: system
Enter password: 123456
docker 结束 */
[root@localhost ~]# systemctl start docker/启动容器/
win10系统
E:\app\Tch\product\11.2.0\dbhome_2\NETWORK\ADMIN找到 tnsnames.ora文件
写入:
ORCL_DOCKER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.253)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = helowin)
)
)
登录步骤:
[root@localhost ~]# docker exec -it oracle_11g bash
[root@b036c969b829 etc]# source /etc/profile/刷新/
[root@localhost ~]# systemctl stop docker/启动容器/
[root@localhost ~]# systemctl start docker/启动容器/
oracle常用语句:
select userenv(‘language’) from dual;查看字符集
SELECT * FROM all_tables WHERE table_name = ‘表名称’;/查看表名是否存在/
SELECT * FROM user_role_privs; /查看当前用户权限/
SQL> grant resource to tang; /system 授权/
date 字段插入或查询数据 TO_DATE(‘1998/04/21 15:30:00’, ‘YYYY/MM/## DD HH24:MI:SS’)需要转译/TO_DATE/
docke安装cnetos
[root@localhost ~]# docker pull centos /安装centos/
[root@localhost ~]# docker images /查看镜像/
[root@localhost ~]# docker run -it centos /bin/bash/进入centos 镜像终端/
[root@localhost ~]# docker ps -a/*查看历史镜像 ; */
[root@9e41d9d77b7a /]# [root@localhost home]# docker ps /Ctrl + p+q 容器停止退出/
[root@localhost home]# docker ps/docker ps 查看运行中的镜像/
[root@localhost home]# docker attach 9e41d9d77b7a /进入正在运行的容器/
[root@9e41d9d77b7a home]# touch hui.php /在容器中创建一个文件/
[root@9e41d9d77b7a home]# exit /退出容器/
[root@localhost home]# docker ps -a/查看历史容器/
[root@localhost home]# docker cp 9e41d9d77b7a:/home/hui.php /home /把容器中的文件复制到本机上 9e41d9d77b7a:容器id:文件路径/