安装Docker
环境查看(系统内核在3.10以上)
[root@12321 ~]# uname -r
4.18.0-193.14.2.el8_2.x86_64
//系统版本
[root@12321 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
1. 移除旧版本
我是刚买的云服务器,所以第一步卸载旧版本不用做
2. 安装工具包
yum install -y yum-utils
- 设置镜像仓库,这里配置阿里的docker镜像地址
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 Docker 引擎
- 安装最新版本的 Docker Engine 和 containerd,或者进入下一步安装特定版本:
安装引擎之前可以先更新软件包索引:yum makecache fast
/*
docker-ce社区版
docker-ce-cli客户端
container.io容器
*/
yum install docker-ce docker-ce-cli containerd.io
5. 启动docker,停止stop
systemctl start docker
6. 测试引擎是否正确安装
docker run hello-world
docker安装成功!
7. 查看hello-world镜像
[root@12321 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 4 months ago 13.3kB
- 有问题?不可能,我基本按照官方文档来的,卸载重来
// 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
// 删除资源
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
阿里云镜像加速
- 镜像加速器
- 配置使用,4条命令:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://o5e3bujz.mirror.aliyuncs.com”]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker常用命令
- 帮助命令:docke --help
docker info --docker系统信息,包括镜像和容器的数量
查看官方文档
2. 镜像命令
查看所有镜像:docker images
[root@12321 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d1165f221234 4 months ago 13.3kB
镜像搜索:docker search name
和文档一样的效果
镜像拉取(下载):docker pull name:x.x
- docker pull tomcat:8
不加tag,默认下载最新
加:tag,指定版本
docker pull myslq:5.7
删除镜像docker rmi
根据id删除: docker rmi -f 容器id 容器id 容器id
删除全部容器: docker rmi -f $(docker images -aq)
-如删除镜像失败,查看容器内是否存在,docker ps -a;删除对应容器,再删除镜像
3. 容器命令:docker ps
说明: 有了镜像才可以创建容器,下载一个centos镜像来测试学习: docker pull centos
新建容器并启动
docker run [可选参数] image
[root@kuangshen~]# docker run -it centos /bin/bash // 启动并进入容器,使用/bin的bash命令
[root@4027a9deb9a2 /]# ls // 查看容器内的centos
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
[root@4027a9deb9a2 /]# exit // 退出容器
exit
列出所有运行的容器
[root@kuangshen ~]# docker ps // 当前正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@kuangshen ~]# docker ps -a // 当前正在运行+历史运行过得容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4027a9deb9a2 centos "/bin/bash" 4 minutes ago Exited (0) About a minute ago nifty_murdock
2144903fa33e hello-world "/hello" 11 hours ago Exited (0) 11 hours ago nice_merkle
退出容器
删除容器
-如删除容器失败,查看容器是否停止,docker stop 容器id;再删除对应容器
- 启动和停止容器的操作
其他常用命令
后台启动容器:docker run -d
查看日志
[root@kuangshen ~]# docker run -it centos /bin/bash // 启动容器
[root@871775c8ccec /]# [root@kuangshen ~]# // 键盘:Ctrl+p+q
[root@kuangshen ~]# docker ps // 查看运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
871775c8ccec centos "/bin/bash" 52 seconds ago Up 51 seconds exciting_hopper
[root@kuangshen ~]# docker logs -f -t --tail 10 871775c8ccec // 查看日志
shell测试日志脚本:while true;do echo 12321;sleep 1;done
[root@kuangshen ~]# docker run -d centos /bin/sh -c "while true; do echo kuangshen;sleep 1;done"
a300f689107994566049b151d9bce590da504e4424507d02db259489085a2b94
[root@kuangshen ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a300f6891079 centos "/bin/sh -c 'while t…" 9 seconds ago Up 8 seconds romantic_sanderson
[root@kuangshen ~]# docker logs -f -t --tail 20 a300f6891079
2021-07-20T02:09:41.981069697Z kuangshen
2021-07-20T02:09:42.982979661Z kuangshen
2021-07-20T02:09:43.984907682Z kuangshen
2021-07-20T02:09:44.986846575Z kuangshen
2021-07-20T02:09:45.988628762Z kuangshen
2021-07-20T02:09:46.990483201Z kuangshen
2021-07-20T02:09:47.992250811Z kuangshen
2021-07-20T02:09:48.994200650Z kuangshen
2021-07-20T02:09:49.996342484Z kuangshen
2021-07-20T02:09:50.998422565Z kuangshen
2021-07-20T02:09:52.000735140Z kuangshen
2021-07-20T02:09:53.002588607Z kuangshen
2021-07-20T02:09:54.004618479Z kuangshen
2021-07-20T02:09:55.006647342Z kuangshen
查看容器中进程信息:top
[root@kuangshen ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a300f6891079 centos "/bin/sh -c 'while t…" 12 minutes ago Up 12 minutes romantic_sanderson
[root@kuangshen ~]# docker top a300f6891079
UID PID PPID C STIME TTY TIME CMD
root 101860 101840 0 10:08 ? 00:00:00 /bin/sh -c while true; do echo kuangshen;sleep 1;done
root 102718 101860 0 10:21 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
查看镜像元数据:inspect
docker inspect a300f6891079
进入当前正在运行的容器!
docker exec -it 容器id bashShell,退出:exit
docker exec -it a300f6891079 /bin/bash
docker attach 容器id bashShell
docker attach a300f6891079
清空容器:docker rm -f $(docker ps -aq)
从容器内拷贝文件到主机上: docker cp 容器id:容器内路径 目的主机路径
安装Nginx
[root@kuangshen ~]# docker search nginx // 搜索
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 15178 [OK]
.....
.....
[root@kuangshen ~]# docker pull nginx // 下载
Using default tag: latest
latest: Pulling from library/nginx
.....
.....
docker.io/library/nginx:latest
[root@kuangshen ~]# docker images // 查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 9f1d21c1025a 6 hours ago 448MB
nginx latest 4cdc5dd7eaad 13 days ago 133MB
hello-world latest d1165f221234 4 months ago 13.3kB
centos latest 300e315adb2f 7 months ago 209MB
[root@kuangshen ~]# docker run -d --name=nginx01 -p 3346:80 nginx // 启动容器
b34c7392ddac215a5500583458670b67451d05c4a51ad2d573da787db1bdb222
[root@kuangshen ~]# docker ps // 查看容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b34c7392ddac nginx "/docker-entrypoint.…" 10 seconds ago Up 9 seconds 0.0.0.0:3346->80/tcp, :::3346->80/tcp nginx01
[root@kuangshen ~]#curl localhost:3346 // 本地访问
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@kuangshen ~]#firewall-cmd --zone=public --add-port=3346/tcp --permanent // 开启端口
FirewallD is not running
[root@kuangshen ~]# systemctl start firewalld //
[root@kuangshen ~]# firewall-cmd --zone=public --add-port=3346/tcp --permanent
success
[root@kuangshen ~]# firewall-cmd --reload
success
[root@kuangshen ~]# docker ps // 查看容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b34c7392ddac nginx "/docker-entrypoint.…" 12 minutes ago Up 12 minutes 0.0.0.0:3346->80/tcp, :::3346->80/tcp nginx01
[root@kuangshen ~]# docker exec -it nginx01 /bin/bash // 进入容器
root@b34c7392ddac:/# whereis nginx // 寻找nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@b34c7392ddac:/#
docker run -d --name=nginx01 -p 3346:80 nginx:命名为nginx01,公网端口为3346;-p宿主机
curl localhost:3346:本机自测
常用命令:
systemctl start firewalld
//开启6379端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
//检查端口是否开启
firewall-cmd --query-port=6379/tcp
//重启防火墙
firewall-cmd --reload
查看端口号:
netstat -ntlp //查看当前所有tcp端口·
netstat -ntulp |grep 1935 //查看所有1935端口使用情况·
开启防火墙systemctl start firewalld
确认firewalld状态:systemctl status firewalld