欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker 教程 常用命令 基本使用

程序员文章站 2022-06-16 21:24:11
...

好久没有更新了,生锈了

1. 基本操作

启动一次性容器:docker run centos echo 'hello world'
启动交互式容器:docker run -it centos /bin/bash,exit 退出并停止容器
启动守护式容器:docker run -it centos /bin/bash,Ctrl+P/Ctrl+Q 退出并后台运行
启动守护式容器:docker run --name web-nginx -d centos /bin/bsh -c ''
停止守护式容器:docker stop web-nginx,docker kill web-nginx
进入守护式容器:docker attach web-nginx
切换容器:docker attach 容器名
查看正在运行的容器的信息:docker ps
查看所有的容器:docker ps - a
查看容器详情:docker inspect  id/name  
给容器起名:docker run --name = web-nginx -i -t centos /bin/bash
重新启动已停止的容器:docker start -i web-nginx
删除已经停止的容器:docker rm web-nginx
查看容器运行的情况:docker logs -tf --tail 10 web-nginx
查看容器的进程:docker -top web-nginx
在容器中启动新的进程:docker exec -i -t web-nginx /bin/bash

2. 容器端口的映射

设置容器端口映射:docker -P/-p 
只指定容器的端口:docker run -p 80 --name web-nginx -i -t centos /bin/bash 宿主机的端口是随机映射的
指定宿主机和容器的端口:docker run -p 8080:80 --name web-nginx -i -t centos /bin/bash
指定容器IP和端口:docker run -p 0.0.0.0:80 --name web-nginx -i -t centos /bin/bash
指定IP 宿主机 容器端口:docker run -p 0.0.0.0:8080:80 --name web-nginx -i -t centos /bin/bash
安装nginx、vim,创建目录和HTML,whereis nginx查看nginx安装在哪里,配置并运行nginx
查看容器端口映射:docker port web-nginx 
命令访问http:curl http://127.0.0.1:49167
容器IP地址:docker inspect  id/name --> NetworkSettings --> IPAddress
启动容器的服务:docker exec web-nginx nginx

3. 镜像与仓库

查看docker存储位置和驱动:docker info
docker存储的位置:/var/lib/docker
镜像存储位置:/var/lib/docker/aufs/mnt
列出所有的镜像:docker images
REPOSITORY:镜像所属的仓库名(镜像的集合),TAG:标签名,IMAGE ID:被截断后的id
REGISTRY:docker镜像的存储服务
查看某个仓库的镜像:docker images centos
查看容器或镜像的详情信息:docker inspect ubuntu:14.04(仓库名+TAG)/或者镜像的id
删除镜像:docker rmi ubuntu:14.04(仓库名+TAG)/或者镜像的id

4. 获取和推送镜像

docker仓库:https://hub.docker.com/explore/
命令查找:docker search -s 3 ubuntu
拉取安装镜像:docker pull ubuntu14.0.4
使用国内镜像仓库下载:
	a. 修改:/etc/default/docker(docker的启动配置文件)
	b. 添加:DOCKER_OPTS="--registry-mirror=在https://www.daocloud.io中生成连接"
通过容器构建:docker commit -a“作者”-m“备注”commit_test  仓库名/镜像名
*通过Dockerfile文件构建:docker build
	a. 创建docker的目录和文件:mkdir -p /dockerfile/df-test,vim dockerfile
将下面的内容填写到dockerfile中
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190112212230647.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1ExMDEzMzMxUQ==,size_16,color_FFFFFF,t_70)
c. docker build -t='/dockerfile/df-test'	

5. 客户端和守护进程

docker的客户端与守护进程是通过socket连接的
有三种方式:unix(默认的连接方式)、tcp、fd
启动-停止-重启 守护进程:service docker stop/start/restart
客户端远程访问服务端:
	a. 修改服务端:/etc/default/docker(docker的启动配置文件),加入-H选项使用tcp协议
	b. 客户端:export DOCKER_HOST=“tcp://10:211:55.5:2375”
	c. 执行docker info 就会默认连接到远程的服务端
dockerfile构建过程:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190112212415953.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1ExMDEzMzMxUQ==,size_16,color_FFFFFF,t_70)

6. docker网络

ifconfig docker0 192.168.1.110 netmask 255.255.255.0
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190112212449810.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1ExMDEzMzMxUQ==,size_16,color_FFFFFF,t_70)

7. 常用命令

创建并启动:docker run --name hadoop1 -itv /software/docker/hadoop1/:/tmp my-centos /bin/bash
启动:docker exec -it hadoop1 /bin/bash
停止:docker stop  ID/NAME  ID/NAME  ID/NAME
删除容器:docker rm  ID/NAME
获取指定版本镜像:docker pull centos:centos6
启动容器时,自动读取自定义的环境变量:/root/.bashrc
修改时间:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

8. Dockerfile

1-FORM:基于什么镜像,FROM <image>或FROM <image>:<tag>
2-MAINTAINER:维护者信息,MAINTAINER <name>
3-RUN:在基础镜像上执行,搭建环境,RUN <command> 或 RUN ["executable", "param1", "param2"]
4-CMD:启动容器时执行的命令,只能有一条
	• CMD ["executable","param1","param2"] 使用 exec 执行,推荐方式;
	• CMD command param1 param2 在 /bin/sh 中执行,提供给需要交互的应用;
	• CMD ["param1","param2"] 提供给 ENTRYPOINT 的默认参数;
5-EXPOSE:容器暴露的端口号,EXPOSE <port> [<port>...]
6-ENV:指定环境变量,会被后续的RUN指令使用,并在容器运行时保持
7-ADD:就是复制文件到容器中,ADD <src> <dest>,<src>:可以是一个本地文件,可以是URL,tar文件会自动解压
8-COPY:单纯的复制本地文件到容器中,COPY <src> <dest>
9-ENTRYPOINT:容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖,只能有一条命令
	• ENTRYPOINT ["executable", "param1", "param2"]
	• ENTRYPOINT command param1 param2(shell中执行)。
10-VOLUME:创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等,VOLUME ["/data"]
11-USER:容器运行时的用户名,USER daemon
12-WORKDIR:切换目录,为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录
13-ONBUILD:配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令,ONBUILD [INSTRUCTION]
构建镜像:docker build -t my-centos .

docker设置静态ip(只能设置一个静态ip)
在容器外创建网卡:docker network create --subnet=192.19.2.1/30 myIp
启动时加入此选项即可:--net myIp --ip 192.19.2.1

映射文件夹
-v /software/docker/hadoop1/:/usr/local

删除/停止 所有
停止所有的容器:docker stop $(docker ps -a -q)
删除所有未运行的容器:docker rm $(docker ps -a -q)
删除所有未打tag的镜像:docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
删除所有镜像:docker rmi $(docker images -q)
删除单个容器:docker  rm  id
删除单个镜像:docker  rmi  id

docker network
docker network create:创建
docker network connect
docker network ls:列出
docker network rm:删除
docker network disconnect
docker network inspect

使用docker作为虚拟机,之后的一些配置查看环境变量是否正确
设置root密码:passwd
关闭防火墙:service iptables status
开启ssh服务:service sshd start
配置ssh免密登录:ssh-******  -->  ssh-copy-id hadoop1 2 3等等
写一个服务器初始化文件:docker-server-init.sh,然后将这个文件在/root/.bashrc文件中启动

查看指定docker的ip地址:docker inspect hadoop1 | grep IPAddress