docker基本命令及使用

基本命令及使用

#文件拷贝 docker cp
#将文件拷贝到容器内部
  docker cp 文件名 容器名或id:容器路径
  docker cp test.jar centos:/usr/local
#将容器内部文件拷贝到外部
  docker cp 容器名或id:容器路径/文件名  路径 
  docker cp centos:/usr/local test2.jar

#目录挂载 docker -v 
  docker  -v 宿主机目录:容器目录
  
#查看容器信息(ip) docker inspect
  docker inspect 容器名
    
#删除镜像 docker rmi
  docker rmi 镜像名称
  
#删除容器 docker rm
  docker rm 容器名称
  
#进入容器
  docker exec -it 容器名  /bin/bash  
  
#将容器保存为镜像
  docker commit -m "镜像的描述信息" -a "设置镜像的作者" 容器名称  镜像名称

#将镜像备份
  #镜像导出
  docker save -o  备份镜像文件的名称  镜像名称
  #镜像导入
  docker load -i 文件名称

#使用本地容器创建镜像
  docker commit -m "镜像的描述信息" -a "设置镜像的作者" 容器的id  生成的新镜像的名称
#重定义镜像标识(repository和tag)
  docker tag 原镜像名称 新镜像名称:标识

#查找镜像
  docker search 镜像名称/id
#拉取镜像
  docker pull 镜像名称/id
#查看本地镜像
  docker images
#删除本地镜像
  docker rmi 镜像名称/id/tag  #tag:只删除该标签的镜像,未真正删除镜像
  
#查看 docker run 命令参数
  sudo yum install python3
  pip3 install runlike
  runlike -p <容器名>|<容器ID>
  

#runlike的安装和使用
  # 1.别名方式安装,基于镜像启动
  alias runlike="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike"
  # 2.安装到系统
  pip install runlike
  # 使用  runlike [OPTIONS] [CONTAINER]   显示运行现有Docker容器副本的必要命令行
  --no-name      #不在输出中包括容器名称
  -p, --pretty   #格式化输出
  -s, --stdin    
  --help         #显示此信息并退出。
  
#whaler 安装和使用(通过镜像导出dockerfile)
  # 1.别名方式安装,基于镜像启动
  alias whaler="docker run -t --rm -v /var/run/docker.sock:/var/run/docker.sock:ro pegleg/whaler"
  # 2.安装到系统
  pip install whaler 
  

docker run

#部署tomcat
  docker run ‐di ‐‐name=tomcat ‐p 9000:8080 ‐v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7‐jre7

#部署nginx
  docker run ‐di ‐‐name=mynginx ‐p 80:80 -v 本地目录:/usr/share/nginx/html nginx

#启动MySQL镜像
  docker run -p 3306:3306 -d --name mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7 --lower_case_table_names=1 设置表名参数名等忽略大小写
  #其他参数
  -e MYSQL_ROOT_PASSWORD=root 设置root用户密码
  --lower_case_table_names=1 设置表名参数名等忽略大小写

#启动rabbitmq
  docker run -dit -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
  docker run -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name mq   -p 15672:15672 -p 5672:5672 -d rabbitmq

#启动MySQL镜像
  docker run -p 3306:3306 -d --name mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7 
  其他参数
  -e MYSQL_ROOT_PASSWORD=root 设置root用户密码
  --lower_case_table_names=1  设置表名参数名等忽略大小写
  
#启动MongoDB镜像
  docker run -p 27017:27017 --name mongodb -v /mongodb/data:/data/db -d mongo:4.1 
 
#启动zk镜像
  docker run --privileged=true -di --name=zookeeper -p 2181:2181   zookeeper:3.4.13

#启动Redis镜像
  docker run -p 6379:6379 -d redis redis-server --name redis
 
#启动kafka镜像
  #docker run -d --name kafka --publish 9092:9092    --link zookeeper    --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181      --env KAFKA_ADVERTISED_HOST_NAME=localhost      --env KAFKA_ADVERTISED_PORT=9092      wurstmeister/kafka:2.11-0.11.0.2  
  docker run -d --name kafka --publish 9092:9092  \
    --link zookeeper  \
    --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181  \
    --env KAFKA_ADVERTISED_HOST_NAME=localhost  \
    --env KAFKA_ADVERTISED_PORT=9092   \
    wurstmeister/kafka:2.11-0.11.0.2  

#联网运行centos
  docker run -tid -p 20021:22 --name centos21  --privileged=true    镜像名称   /sbin/init
  docker run -tid -p 20021:22 --name centos21  --privileged=true  -v 宿主机目录:容器目录  镜像名称   /sbin/init


#运行eureka镜像
  docker run -dit --name eureka -p 8080:8761  springcloud/eureka:latest 
  
#sqlserver    密码要求大小写字母数字和特殊字符中的,最少包含三种,且密码长度大于等于8位 
  docker run -d --name=sqlserver -e SA_PASSWORD=Password1234  -e SQLSERVER_DATABASE=qgb -e SQLSERVER_USER=sa -e SQLSERVER_PASSWORD=Password1234 -p 1433:1433 exoplatform/sqlserver

#进入系统
  docker attach 容器名
  docker exec -it 容器名  /bin/bash      /sbin/init 启动的镜像需要用exec进入容器
  
#添加Java  参数
  docker run -e JAVA_OPTS="-Xms512m -Xmx1024m -Dserver.port=8080" myap

docker run参数

  -d, --detach=false         指定容器运行于前台还是后台,默认为false    
  -i, --interactive=false    打开STDIN,用于控制台交互   
  -t, --tty=false            分配tty设备,该可以支持终端登录,默认为false   
  -u, --user=""              指定容器的用户   
  -a, --attach=[]            登录容器(必须是以docker run -d启动的容器) 
  -w, --workdir=""           指定容器的工作目录  
  -c, --cpu-shares=0         设置容器CPU权重,在CPU共享场景使用   
  -e, --env=[]               指定环境变量,容器中可以使用该环境变量   
  -m, --memory=""            指定容器的内存上限   
  -P, --publish-all=false    指定容器暴露的端口   
  -p, --publish=[]           指定容器暴露的端口  
  -h, --hostname=""          指定容器的主机名   
  -v, --volume=[]            给容器挂载存储卷,挂载到容器的某个目录   
  --volumes-from=[]          给容器挂载其他容器上的卷,挂载到容器的某个目录 
  --cap-add=[]               添加权限,权限清单详见:http://linux.die.net/man/7/capabilities   
  --cap-drop=[]              删除权限,权限清单详见:http://linux.die.net/man/7/capabilities   
  --cidfile=""               运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法   
  --cpuset=""                设置容器可以使用哪些CPU,此参数可以用来容器独占CPU   
  --device=[]                添加主机设备给容器,相当于设备直通   
  --dns=[]                   指定容器的dns服务器   
  --dns-search=[]            指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件   
  --entrypoint=""            覆盖image的入口点   
  --env-file=[]              指定环境变量文件,文件格式为每行一个环境变量   
  --expose=[]                指定容器暴露的端口,即修改镜像的暴露端口   
  --link=[]                  指定容器间的关联,使用其他容器的IP、env等信息   
  --lxc-conf=[]              指定容器的配置文件,只有在指定--exec-driver=lxc时使用   
  --name=""                  指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字   
  --net="bridge"             容器网络设置: 
                                bridge 使用docker daemon指定的网桥      
                                host    //容器使用主机的网络   
                                container:NAME_or_ID  >//使用其他容器的网路,共享IP和PORT等网络资源   
                                none 容器使用自己的网络(类似--net=bridge),但是不进行配置  
  --privileged=false         指定容器是否为特权容器,特权容器拥有所有的capabilities   
  --restart="no"             指定容器停止后的重启策略: 
                                no:容器退出时不重启   
                                on-failure:容器故障退出(返回值非零)时重启  
                                always:容器退出时总是重启   
  --rm=false                 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)   
  --sig-proxy=true           设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理 
posted @ 2024-04-17 16:42  顔宸  阅读(22)  评论(0编辑  收藏  举报