docker 基础教程

docker优点:docker容器,一次构建,到处运行。构建之后,在任何支持docker的地方都能把它run起来。
虚拟机:操作系统完全隔离。虚拟机之下还有虚拟机管理程序。
docker:没有虚拟机操作系统这层。主要是基于linux内核对容器的实现。

1、yum install docker-io后docker安装到哪里了:

/usr/bin/docker
/usr/bin/docker-containerd
/usr/bin/docker-containerd-ctr
/usr/bin/docker-containerd-shim

/usr/bin/docker-runc

2、docker pull 下来的镜像文件存放的位置:/var/lib/docker

3、容器位置:/var/lib/docker/containers/

4、docker 进入容器

使用nsenter工具:他是一个可以访问另外一个进程名字空间的一个命令,访问另外一个容器的namespace.

1)、启动容器:

[root@tcy1 tcy]# docker start ef3e81c343c1

2)、获取容器pid:

$ docker inspect -f {{.State.Pid}} 容器名或者容器id

扫描二维码关注公众号,回复: 2240822 查看本文章

3)、进入该容器

nsenter --target 上面查到的进程id  --mount --uts --ipc --net --pid

[root@tcy1 tcy]# docker ps -a //列举所有容器
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                         PORTS                              NAMES
497d2ac4d4c3        elasticsearch       "/docker-entrypoint.   2 days ago          Exited (0) About an hour ago   0.0.0.0:9200->9200/tcp, 9300/tcp   trusting_pare       
ef3e81c343c1        nginx               "nginx -g 'daemon of   12 days ago         Exited (0) 12 days ago         0.0.0.0:80->80/tcp                 gloomy_babbage      
a3fca27221d7        alpine              "sh"                   12 days ago         Exited (0) 12 days ago                                            cranky_brattain     
[root@tcy1 tcy]# docker inspect --format "{{.State.Pid}}" gloomy_babbage
0
[root@tcy1 tcy]# docker start ef3e81c343c1
ef3e81c343c1
[root@tcy1 tcy]# docker inspect --format "{{.State.Pid}}" gloomy_babbage
4308
[root@tcy1 tcy]# nsenter --target 4308 --mount --uts --ipc --net --pid
mesg: ttyname failed: No such file or directory
root@ef3e81c343c1:/# 

写个脚本,快速进入:

[root@tcy1 tcy]# cat in.sh
#!/bin/bash
CNAME=$1
CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME)
nsenter --target "$CPID" --mount --uts --ipc --net --pid

进入:

[root@tcy1 tcy]# ./in.sh gloomy_babbage

5、退出容器:

exit(不会让容器关闭)

6、docker create + docker start  =  docker run

docker run:创建+启动容器,例如下面:以nginx为镜像,创建启动一个新的容器

[root@tcy1 tcy]# docker run -d -p 80:80 nginx

-d:不退出,在后台一直运行。

-p 80:80 端口重定向,把容器中的80端口映射到物理机器上的80端口。


7、docker pull:    pull的时候是一层一层layer,pull的。

8、docker容器 只运行指定的一个应用程序,当应用程序退出,docker容器也就退出了。

如果想在后台运行使用-d,例如:  docker run -d --name container1 nginx

容器关闭后再想启动,先查看容器名字:

docker ps -a | grep nginx

再 docker start 容器名,启动容器。


猜你喜欢

转载自blog.csdn.net/qq_36183935/article/details/80471943