一、Docker容器理解
1.Docker的核心概念
容器是Docker的核心概念,容器是一个或一组应用。
2.容器的运行状态
①docker利用容器容器运行应用程序 ②容器是镜像的运行实例,可以被stop、strat、rm、run ③每个容器都是相互隔离的,保证平台的安全 ④容器可以看作是一个简易版的Linux环境(有root权限,进程,用户空间,网络) ⑤镜像时只读的,容器在启动的时候创建一层可写层。
二、Dockerfile理解
dockerfile面向开发,docker image作为交付标准,docker container涉及部署和运维,三者结合起来完成docker体系。
FROM ubuntu:14.04
ADD run.sh
VOLUME /data
CMD ["./run.sh"]
三、容器使用及操作
1.进入容器空间内
[root@node1 ~]
REPOSITORY TAG IMAGE ID CREATED SIZE
centos_volume latest 6cc85e0cee71 25 hours ago 203MB
centos_curl_new latest d61875c20211 26 hours ago 471MB
centos_curl latest ded6737bf511 26 hours ago 471MB
my_nginx latest ecda82f680dc 35 hours ago 133MB
ittest/centos-vim-7.8.2003 latest 91e91af846d6 46 hours ago 386MB
ubuntu latest c29284518f49 10 days ago 72.8MB
nginx latest 4cdc5dd7eaad 2 weeks ago 133MB
redis latest 08502081bff6 4 weeks ago 105MB
fedora latest 055b2e5ebc94 2 months ago 178MB
centos latest 300e315adb2f 7 months ago 209MB
centos 7.8.2003 afb6fca791e0 14 months ago 203MB
opensuse latest d9e50bf28896 2 years ago 111MB
[root@node1 ~]
root@664e138829e0:/
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
root@664e138829e0:/
2.后台运行容器
[root@node1 ~]
6013d118362f16f746810c1297d9136ffb28d532dca2bf449e4c4040acde5b7c
[root@node1 ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6013d118362f nginx "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp it_nginx
5fbf299d43ea my_nginx "/docker-entrypoint.…" 35 hours ago Up 35 hours 0.0.0.0:80->80/tcp, :::80->80/tcp eager_pike
3.前台运行容器(针对宿主机)
①前台运行容器
[root@node1 ~]
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2021/07/24 14:50:03 [notice] 1
2021/07/24 14:50:03 [notice] 1
2021/07/24 14:50:03 [notice] 1
2021/07/24 14:50:03 [notice] 1
2021/07/24 14:50:03 [notice] 1
2021/07/24 14:50:03 [notice] 1
2021/07/24 14:50:03 [notice] 1
② 新开终端查看容器状态
[root@node1 ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b1f409cc1ca nginx "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:49154->80/tcp, :::49154->80/tcp hardcore_hopper
6013d118362f nginx "/docker-entrypoint.…" 17 minutes ago Up 17 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp it_nginx
5fbf299d43ea my_nginx "/docker-entrypoint.…" 35 hours ago Up 35 hours 0.0.0.0:80->80/tcp, :::80->80/tcp eager_pike
③访问web
④前台nginx日志查看
4.容器运行原理
docker后台的操作默认流程: ①检查本地是否有该镜像,没有就下载 ②利用镜像创建且启动一个容器 ③分配容器文件系统,在只读的镜像层挂载读写层 ④宿主机的网桥接口会分配一个虚拟接口到容器中 ⑤容器获得地址池的IP地址 ⑥容器获得地址池的IP地址 ⑦执行用户指定的程序 ⑧若程序没有进程在运行。容器执行完毕后立即终止
5.查看容器内日志
[root@node1 ~]
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
四、容器常用命令
1.查看容器状态
[root@node1 ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6013d118362f nginx "/docker-entrypoint.…" 25 minutes ago Up 25 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp it_nginx
5fbf299d43ea my_nginx "/docker-entrypoint.…" 35 hours ago Up 35 hours 0.0.0.0:80->80/tcp, :::80->80/tcp eager_pike
[root@node1 ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6013d118362f nginx "/docker-entrypoint.…" 25 minutes ago Up 25 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp it_nginx
5fbf299d43ea my_nginx "/docker-entrypoint.…" 35 hours ago Up 35 hours 0.0.0.0:80->80/tcp, :::80->80/tcp eager_pike
[root@node1 ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b1f409cc1ca nginx "/docker-entrypoint.…" 8 minutes ago Exited (0) 4 minutes ago hardcore_hopper
6013d118362f nginx "/docker-entrypoint.…" 25 minutes ago Up 25 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp it_nginx
664e138829e0 ubuntu "bash" 28 minutes ago Exited (0) 26 minutes ago elastic_herschel
447041a55a0d centos_volume "/bin/bash" 26 hours ago Exited (0) 26 hours ago exciting_burnell
3e02f032ab3d centos_curl_new "curl -s cip.cc -I" 26 hours ago Exited (0) 26 hours ago ecstatic_villani
76df5f73a16d centos_curl "pwd" 26 hours ago Exited (0) 26 hours ago recursing_ride
a03d7954369c centos_curl "-I" 26 hours ago Created inspiring_brahmagupta
82c511283e6d centos_curl "curl -s cip.cc" 26 hours ago Exited (0) 26 hours ago adoring_hermann
5fbf299d43ea my_nginx "/docker-entrypoint.…" 35 hours ago Up 35 hours 0.0.0.0:80->80/tcp, :::80->80/tcp eager_pike
2.停止启动容器
[root@node1 ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6013d118362f nginx "/docker-entrypoint.…" 26 minutes ago Up 26 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp it_nginx
5fbf299d43ea my_nginx "/docker-entrypoint.…" 35 hours ago Up 35 hours 0.0.0.0:80->80/tcp, :::80->80/tcp eager_pike
[root@node1 ~]
6013d118362f
[root@node1 ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5fbf299d43ea my_nginx "/docker-entrypoint.…" 35 hours ago Up 35 hours 0.0.0.0:80->80/tcp, :::80->80/tcp eager_pike
[root@node1 ~]
6013d118362f
[root@node1 ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6013d118362f nginx "/docker-entrypoint.…" 26 minutes ago Up 2 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp it_nginx
5fbf299d43ea my_nginx "/docker-entrypoint.…" 35 hours ago Up 35 hours 0.0.0.0:80->80/tcp, :::80->80/tcp eager_pike
3.进入容器内
[root@node1 ~]
root@6013d118362f:/
exit
[root@node1 ~]
4.删除容器
docker rm 容器ID
docker rm `docker ps -aq`
docker rm -f 容器ID 强制杀死容器
5.查看容器进程信息
[root@node1 ~]
UID PID PPID C STIME TTY TIME CMD
root 32218 32200 0 22:59 ? 00:00:00 nginx: master process nginx -g daemon off;
101 32263 32218 0 22:59 ? 00:00:00 nginx: worker process
[root@node1 ~]
root 32218 0.0 0.2 10652 5812 ? Ss 22:59 0:00 nginx: master process nginx -g daemon off;
root 32408 0.0 0.0 12112 1072 pts/0 R+ 23:04 0:00 grep --color=auto 32218
6.查看容器资源信息
[root@node1 ~]
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
6013d118362f it_nginx 0.00% 2.562MiB / 1.92GiB 0.13% 2.37kB / 0B 1.37MB / 0B 2
7.查看容器具体信息
[root@node1 ~]
[root@node1 ~]
8.获取容器内地址
[root@node1 ~]
172.17.0.3
|