|NO.Z.00106|——————————|CloudNative|——|KuberNetes&Docker操作.V04|——|docker命令.v03|启动镜像|
一、启动镜像
### --- docker镜像启动方式
~~~ # 前台启动:
~~~ 自己调试的时候会采用前台启动,比如自己做好了一个镜像,
~~~ 需要验证这个镜像是不是对的,需要前台启动去调试。
~~~ # 后台启动:
~~~ 做好的镜像,要发布到生产环境去;肯定是后台启动;
~~~ 后台启动docker是后台启动,但是进程时前台启动。
~~~ 所有的进程启动都是以前台启动为准,
~~~ 比如nginx前台启动:Nginx -g daemon off,nginx是前台启动。
### --- 下载镜像并查看版本
~~~ # 准备centos8的镜像
[root@k8s-master01 ~]# docker pull centos:8
~~~ # 查看镜像版本
[root@k8s-master01 ~]# docker images
centos 8 300e315adb2f 4 months ago 209MB
### --- 前台运行容器;使用默认端口启动
~~~ # 前台启动一个centos8的容器
[root@k8s-master01 ~]# docker run -ti centos:8 bash // -ti指这个终端
[root@dd5079a619dd /]# // 已进入容器内部
~~~ # 前台启动一个nginx容器:若是有这个镜像会直接启动,若是没有这个镜像,会有一个拉取镜像的动作;安装nginx:1.14.2
~~~ 注:参数是没有任何东西的,可以沟通过浏览器去访问,看是否可以访问,若是可以访问,说明前台启动启动成功。
~~~ 注:通过Chrome访问后打印日志
[root@k8s-master01 ~]# docker run -ti -p 12345:80 nginx:1.14.2
192.168.1.104 - - [12/Apr/2021:10:10:58 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36" "-"
2021/04/12 10:10:59 [error] 6#6: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.1.104, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.1.11:12345", referrer: "http://192.168.1.11:12345/"
192.168.1.104 - - [12/Apr/2021:10:10:59 +0000] "GET /favicon.ico HTTP/1.1" 404 571 "http://192.168.1.11:12345/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36" "-"
### --- 前台运行容器;指定端口
~~~ # 指定端口启动容器
~~~ # 通过Chrome访问前台启动nginx:http://192.168.1.11:12345/
[root@k8s-master01 ~]# docker run -ti -p 12345:80 nginx:1.14.2 nginx //最后一个nginx前台启动命令
[root@k8s-master01 ~]# docker ps -a
4e09ca34a853 nginx:1.14.2 "nginx" 7 seconds ago Exited (0) 5 seconds ago nice_zhukovsky
### --- 后台启动一个容器
~~~ 后台启动一个nginx镜像:加入-d后台启动
~~~ 注:浏览器还是可以访问的。
### --- 通过Chrome访问前台启动nginx:http://192.168.1.11:12345/
[root@k8s-master01 ~]# docker run -tid -p 12345:80 nginx:1.14.2 //加入了-d daemon of后期启动,进程一直都在,所以不会退出。
55bc32a48f56ac4a1bca47a41493cc4bcedce643e035bfa156b8c17d4eae086e
[root@k8s-master01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
55bc32a48f56 nginx:1.14.2 "nginx -g 'daemon of…" 5 seconds ago Up 3 seconds 0.0.0.0:12345->80/tcp confident_torval

### --- 后台启动
~~~ # 后台启动一个容器;-d:后台启动一个镜像
~~~ # 注:因为这个容器没有前台启动的进程,所以运行之后是退出状态,是一个Exited状态。
[root@k8s-master01 ~]# docker run -d centos:8 bash
a40dc5602d9a84f80a9d610af32365aa8d8ccfe27d6dc261809aad542d0ab92c
[root@k8s-master01 ~]# docker ps -a
dd5079a619dd centos:8 "bash" 6 minutes ago Exited (0) 4 minutes ago determined_cray
四、容器操作:
### --- 查看指定容器的日志
~~~ # 查看运行中的容器
[root@k8s-master01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
28a25f7e972f nginx:1.14.2 "sh"
~~~ # 查看nginx的日志
~~~ 注:日志其实是放在这个目录下 /var/lib/docker/containers,和这个日志是一致的,不过是做了格式化的。
[root@k8s-master01 ~]# docker logs -f 28a25f7e972f // -f是动态的查看日志,
# echo $? // 之前的输出操作
~~~ # 通过本地查看日志
[root@k8s-master01 ~]# cat /var/lib/docker/containers/28a25f7e972f55a745de768bd658505636752f074630659fad3d739a32b3e32e/28a25f7e972f55a745de768bd658505636752f074630659fad3d739a32b3e32e-json.log
### --- docker ps查看正在运行的容器
~~~ # 查看正在运行的容器
[root@k8s-master01 ~]# docker ps
28a25f7e972f nginx:1.14.2 "sh" 12 minutes ago Up 12 minutes 80/tcp eager_vaughan
~~~ # 查看所有的容器;不管是运行的,报错的,退出的都可以查看到。
[root@k8s-master01 ~]# docker ps -a
28a25f7e972f nginx:1.14.2 "sh" 12 minutes ago Up 12 minutes 80/tcp eager_vaughan
~~~ # 查看正在运行的容器的ID号
[root@k8s-master01 ~]# docker ps -q
28a25f7e972f
[root@k8s-master01 ~]# docker ps -aq // 加a是所有的
a40dc5602d9a
### --- 进入容器exec
~~~ # 进入容器
[root@k8s-master01 ~]# docker ps
28a25f7e972f nginx:1.14.2 "sh" 15 minutes ago Up 14 minutes 80/tcp eager_vaughan
[root@k8s-master01 ~]# docker exec -ti 28a25f7e972f sh // 已进入到容器内部
### --- 删除本机的镜像文件
~~~ # 删除容器的镜像
[root@k8s-master01 ~]# docker images
nginx latest 519e12e2a84a 2 days ago 133MB
[root@k8s-master01 ~]# docker rmi 519e12e2a84a
Untagged: nginx:latest
Untagged: nginx@sha256:6b5f5eec0ac03442f3b186d552ce895dce2a54be6cb834358040404a242fd476
Deleted: sha256:519e12e2a84a9eb18094635ae1edfd97b26f95dbc66e317eefb657a1cb08c8dc
Deleted: sha256:11d4f30257b6da786a7100dbb0d482794591961edc9d7d68697712d5aaab3906
Deleted: sha256:030d2cbb296e4003ab316bf72507169cecade615c97b4d700a28f098c473bc0f
~~~ # 删除容器
[root@k8s-master01 ~]# docker ps -a
4e09ca34a853 nginx:1.14.2 "nginx" 19 minutes ago Exited (0) 19 minutes ago nice_zhukovsky
[root@k8s-master01 ~]# docker rm 4e09ca34a853
4e09ca34a853
[root@k8s-master01 ~]# docker ps -a |grep 4e09ca34a853
[root@k8s-master01 ~]# docker rm 'docker ps -a // 删除所有的容器,命令比较危险,谨慎使用。
### --- 停止容器
~~~ # 停止某一个容器
[root@k8s-master01 ~]# docker ps
55bc32a48f56 nginx:1.14.2 "nginx -g 'daemon of…" 18 minutes ago Up 18 minutes 0.0.0.0:12345->80/tcp confident_torvalds
[root@k8s-master01 ~]# docker stop 55bc32a48f56
55bc32a48f56
[root@k8s-master01 ~]# docker ps |grep 55bc32a48f56
~~~ # 启动某一个容器
~~~ 注:显示是up状态
[root@k8s-master01 ~]# docker start 55bc32a48f56
55bc32a48f56
[root@k8s-master01 ~]# docker ps |grep 55bc32a48f56
55bc32a48f56 nginx:1.14.2 "nginx -g 'daemon of…" 20 minutes ago Up 7 seconds 0.0.0.0:12345->80/tcp confident_torvalds
五、容器中拷贝文件
### --- 拷贝文件到容器中,
### --- 通过Chrome访问nginx容器查看拷贝文件是否生效
~~~ # 把本地文件拷贝到容器里面
[root@k8s-master01 ~]# docker ps
55bc32a48f56 nginx:1.14.2 "nginx -g 'daemon of…" 2 minutes ago Up 2 minutes 0.0.0.0:12345->80/tcp confident_torval
[root@k8s-master01 ~]# docker exec -ti 55bc32a48f56 bash
root@55bc32a48f56:/# cd /usr/share/nginx/html/ // 官方nginx发布目录在这个位置
~~~ # 从宿主机拷贝一个文件到nginx容器的发布目录下写入一个html文件
[root@k8s-master01 ~]# echo "test cp" >index.html
~~~ # 从宿主机拷贝文件到nginx容器的发布目录下
[root@k8s-master01 ~]# docker cp index.html 55bc32a48f56:/usr/share/nginx/html/ //index.html宿主机文件+容器+发布目录
~~~ # 把容器里面的文件拷贝到本地主机
[root@k8s-master01 ~]# docker cp 55bc32a48f56:/usr/share/nginx/html/index.html .
~~~ # 在本地可以查看到从nginx容器拷贝出来的文件
[root@k8s-master01 ~]# ll
-rw-r--r-- 1 root root 8 Apr 12 18:23 index.html
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通