1 搜索镜像
搜索centos镜像
docker search centos
- NAME:镜像名称
- DESCRIPTION :描述信息
- STARS:类似于点赞
- OFFICIAL:是否为Docker官方发布
- AUTOMATED:是否为自动构建(第三方构建)
2 拉取镜像
docker pull centos
3 查看下载的镜像
docker images
4 删除镜像
docker rmi redis
5 把镜像下到本地
docker save redis > /root/redis.tar.gz
6 把本地镜像导入docker
docker load < /root/redis.tar.gz
注:导入的镜像名称可能会是 none 我们需要修改一下
给镜像打个tag
docker tag 256cb12e72d6 jenkins:2.16
7 创建并启动一个容器
docker run -it --name my_redis redis /bin/bash
- run :创建并启动
- -i :交互模式标准输入打开
- -t :启动一个tty终端
- --name my_redis :my_redis 容器名称 --name给容器起一个名称
- redis : 镜像名称
- /bin/bash:执行的一条命令
进入容器后如果我们要退出容器改怎么办那?
第一种方法 输入exit
这里我们能看到exit退出后容器就关闭了,这是为什么那,我们在进入一下这个容器看一下
能看到容器中只运行了一个bash进程,使用exit退出会关闭bash这个进程,这时候容器中就没有任何运行的进程了,就会触发docker默认机制:如果一个容器中没有任何运行进程会自动关闭容器 所以如果使用attach选项进入容器这种退出方法很不可取。
那么attach选项进入容器后该如何安全的退出那?
第二种方法 组合键
按住Ctrl 再按p 再按q(p和q不是同时哦)
退出后查看容器状态
read escape sequence不是命令哦 是按组合键后返回的信息
8 查看容器状态
docker ps 查看运行中的容器
docker ps -a 查看所有容器包括停止的
9 关闭/启动一个容器
docker stop my_centos
docker start my_centos
10 删除镜像/容器
删除镜像
docker rmi redis
这里要注意:如果使用镜像创建了容器(哪怕没有启动),我们这么删除镜像会报错无法删除
我们必须要先删除使用该镜像穿件的容器,然后才能删除镜像
删除容器
删除容器的时候会有两种情况,1 容器已停止运行 2 容器正在运行
docker rm my_redis (my_redis是容器名称NAMES)
删除正在运行的容器
直接删除会报错无法删除,两种方法删除正在运行的程序
1 先关闭容器 再删除
2 强制删除正在运行的容器
docker rm -f my_redis
删除完所有使用redis镜像创建的容器后我们就可以删除镜像了
10 进入容器方法
进入容器的方法有3中
1 attach (不推荐方法)
进入方法
docker attach my_centos
不推荐的原因,
- 1退出问题,如果不小心使用了exit退出整个容器都会关闭
- 2 安全性,当你使用attach进入容器,另一个人也使用attach进入同一个容器,这样你在容器中所有的操作会实时的反应到另一人的屏幕中,就像VNC一样。
2 exec
docker exec -it my_centos /bin/bash
可以看到 进程中有两个/bin/bash 所以当exit退出的时候容器是不会关闭的,别人使用exec登录同一个容器 也不会同步显示当前操作
3 利用 nsenter 命令
如果没有nsenter命令安装util-linux包
yum –y install util-linux
这种方法进入容器必须要先获取容器进程的pid
docker inspect --format "{{.State.Pid}}" 08625bf95617
6793
[root@localhost ~]# nsenter -t 23409 -u -i -n -p
这样exit退出容器后 容器还会继续运行
启动容器脚本
vim enter_docker.sh
#!/bin/bash
docker ps -a
read -p "输入要进入的Docker名称:" NUM
PID=$(docker inspect --format "{{.State.Pid}}" $NUM)
nsenter -t $PID -u -i -n -p
11 镜像详细信息查看
docker inspect centos
12 容器详细信息查看
docker inspect d3df12fe8458
13 构建容器,随docker自动运行
创建容器的时候加上--restart=always
docker run --restart=always -it --name=jenkinx 256cb12e72d6
如果容器已经创建完成,使用update --restart=always
docker update --restart=always 容器ID
这样物理机reboot之后 容器会自动运行
或者修改/etc/docker/daemon.json
vim /etc/docker/daemon.json
添加
"live-restore": true
systemctl daemon-reload
systemctl restart docker
14 docker容器和宿主机之间端口映射
默认情况下docker容器内的服务,外部是无法访问的,我们需要把docker容器与宿主机之间做端口映射,外部才能正常访问容器服务
方法1 -P(大写)参数 随机端口映射
docker run -d --restart=always -P --name=jenkins 256cb12e72d6
把宿主机1025端口映射到docker容器8080端口
15 查看docker日志
方法1
docker logs 8da3b09107a3
docker logs -tf --tail 10 8da3b09107a3
-t 加入时间戳显示
-f 时时追踪
--tail 显示左后多少行
方法2
docker inspect 8da3b09107a3
cat /data/docker/containers/8da3b09107a3f5984815b94f1fc25563bcca9cac3c6bdd841ee2848264702788/8da3b09107a3f5984815b94f1fc25563bcca9cac3c6bdd841ee2848264702788-json.log
16 查看容器内运行的进程
docker top 8da3b09107a3