Docker 基础操作
image
获取镜像
镜像查询
docker search centos
镜像拉取
docker pull centos:6.9
镜像基本查看
[root@docker ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 6.8 82f3b5f3c58f 4 months ago 195 MB
centos 6.9 2199b8eb8390 4 months ago 195 MB
centos 7.5.1804 cf49811e3cdb 4 months ago 200 MB
centos 7.6.1810 f1cb7c7d58b7 4 months ago 202 MB
标识镜像唯一性的方法:
1. REPOSITORY:TAG
centos:7.5.1804
2. IMAGE ID (sha256:64位的号码,默认只截取12位)
82f3b5f3c58
[root@docker /]# docker image ls --no-trunc
镜像详细信息查看
docker image inspect ubuntu:latest
docker image inspect 82f3b5f3c58f
只查看镜像ID
docker image ls -q
镜像的导入和导出
# 导出
docker image save 3556258649b2 >/tmp/ubu.tar
# 导入
docker image load -i /tmp/ubu.tar
docker image tag 3556258649b2 youto/ubu:v1
镜像的删除
docker image rm -f 3556258649b2
# 删除所有镜像
docker image rm -f `docker image ls -q`
container
交互式的容器
docker container run -it 9f38484d220f
docker container ls
# CONTAINER ID : 容器的唯一号码(自动生成的)
# NAMES : 容器的名字(可以自动,也可以手工指定)
# STATUS : 容器的运行状态 ( Exited , Up)
# 手工指定容器名启动
docker container run -it --name="youto_centos76" 9f38484d220f
守护式容器
docker run -d --name="youto_nginx" nginx:1.14
# 查询容器的详细信息:
docker container inspect youto_nginx
容器的应用场景
# 交互式的容器: 工具类: 开发,测试,临时性的任务()
docker container run -it --name="youto_cent76" --rm 9f38484d220f
# 守护式容器: 网络服务
docker run -d -p 8080:80 --name="youto_nginx_80" nginx:1.14
守护式容器的关闭和启动
# 守护式容器的关闭和启动
docker container stop oldguo_nginx_80
docker container start oldguo_nginx_80
# 交互式的容器的关闭和启动
docker container stop nervous_allen
docker container start -i nervous_allen
# 容器的连接方法:
docker container attach nervous_allen
# 子进程的方式登录(在已有工作容器中生成子进程,做登录.可以用于进行容器的调试,退出时也不会影响到当前容器)
docker container exec -it nervous_allen /bin/bash
# 容器的后台及前台运行:
1. ctrl + P, Q
attach 调用到前台
2. 死循环
3. 让程序前台一直允许(夯在前台)
制作守护式容器时,常用的方法
容器的端口映射
指定映射(docker 会自动添加一条iptables规则来实现端口映射)
-p hostPort:containerPort
-p ip:hostPort:containerPort
-p ip::containerPort(随机端口:32768-60999)
-p hostPort:containerPort/udp
-p 81:80 –p 443:443
随机映射
docker run -P 80(随机端口)
docker container run -d -p 8080:80 --name='n2' nginx:1.14
docker container run -d -p 10.0.0.100:8081:80 --name='n3' nginx:1.14
docker container run -d -p 80 --name='n5' nginx:1.14
docker container run -d -p 172.16.1.200::80 --name='n6' nginx:1.14
容器的其他管理
docker ps -a -q
等价于:
docker container ls -a -q
docker top ba9143bcaf74
等价于:
docker container top ba9143bcaf74
查看日志:
docker logs testxx
docker logs -tf testxx
docker logs -t testxx
docker logs -tf --tail 10 testxx
docker logs -tf --tail 0 testxx
命令总结
镜像类
docker image
search
pull
ls
inspect
rm
save
load
容器类
docker container
run
start
stop
restart
kill
attach
exec
ls
top
logs
inspect
数据卷
1. 手工交互数据:
[root@docker opt]# docker container cp index.html n1:/usr/share/nginx/html/
[root@docker opt]# docker container cp n1:/usr/share/nginx/html/50x.html ./
2. Volume实现宿主机和容器的数据共享
[root@docker opt]# mkdir -p /opt/html
[root@docker ~]# docker run -d --name="nginx_3" -p 83:80 -v /opt/html:/usr/share/nginx/html nginx
作用: 数据持久化
3. 例子: 开启两个nginx容器(90,91),共同挂载一个数据卷,实现静态资源共享
4. 数据卷容器:
(1)宿主机模拟数据目录
mkdir -p /opt/Volume/a
mkdir -p /opt/Volume/b
touch /opt/Volume/a/a.txt
touch /opt/Volume/b/b.txt
(2)启动数据卷容器
docker run -it --name "nginx_volumes" -v /opt/Volume/a:/opt/a -v /opt/Volume/b:/opt/b centos:6.9 /bin/bash
ctrl p q
(3)使用数据卷容器
docker run -d -p 8085:80 --volumes-from nginx_volumes --name "n8085" nginx
docker run -d -p 8086:80 --volumes-from nginx_volumes --name "n8086" nginx
作用: 在集中管理集群中,大批量的容器都需要挂载相同的多个数据卷时,可以采用数卷容器进行统一管理