Docker-命令

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013867301/article/details/83963584

暂不考虑win10(坑太多),用linux操作
均来自官网,为方便查询,记录一下

操作系统相关


#linux 将docker添加到非root用户 
$ sudo groupadd docker  
$ sudo usermod -aG docker $USER  
#dns修改,在/etc/docker/daemon.json中加入,8.8.8.8备用,需重启service     
"dns": ["your_dns_address", "8.8.8.8"]    

docker命令


#查看命令  
docker
#查看信息
docker --version
docker version
docker info

#查看镜像
docker image ls 
#运行镜像
docker run <imgName>  
docker run -it <imgName> <shellPath> #以shell窗口交互式创建容器,shellPath 如 /bin/bash  
docker run -i -t [-v hostDirectoryPath:containerDirectoryPath] <imgName> <shellPath>
#进入已有容器
docker exec -it <container> <shellPath>
#删除镜像,如果有多个镜像,可以指定名称进行删除
docker rmi [imgId|imgName]  
docker image rm $(docker image ls -a -q)  #删除所有  
#查看容器
docker container --help
docker container ls [--all] [-q]
docker ps -a  
# 停止容器运行
docker container stop <container id>    
docker container kill <container hash>
#删除容器
docker rm <container hash>  
docker container rm <hash>  

# 服务
docker service ls  
docker service ps <service>  
docker inspect <task or container>  

# 登录到registry  
docker login  

# 使用dockerfile创建app,标记tag,  
docker build -t <tagName> <dockerfilePath>  

# 给镜像添加仓库标记,最后的标签用来区分和标记版本  
docker tag <imageName> username/repository[:tag]  
# 上传到标记的仓库,之后可以用username/repository:tag作为imageName
docker push username/repository:tag
# 运行app,-d表示后台,-p表示对端口转化
docker run [-d] [-p 4000:80] <tagName>    

# stack移除app  
docker stack rm <appname>  
docker stack ls
# 部署服务,支持修改属性后重新运行立即生效  
docker stack deploy -c <composefile> <serviceName>
 
# 初始化swarm, 不写地址则是本机为manager   
# docker-machine ls命令会显示端口号为2376,这是daemon的端口。所以这里不能用,一般可以设置为2377或者不写  
docker swarm init [--advertise-addr 192.168.99.100]
# 加入到swarm中,token是初始化时返回的
docker swarm join --token SWMTKN-1-5q563y5uytmtydmr7i745whalm2z8ejivahlfwmfc6ofd7j7x7-92kddt6kcrscjxg4wj874k06s 192.168.99.100:2377
# 从任何节点离开swarm
docker swarm leave
# 从manager离开
docker swarm leave --force  
# 在manager上查看节点信息
docker node ls  
docker node inspect <node ID>

# 创建vm  
docker-machine create --driver virtualbox <machineName>
docker-machine ls  
# 会输出一些export和命令,你可以执行命令,让shell配置,这样就可以直接和vm交互。
docker-machine env <machineName>  
# ssh进入虚拟机,并执行“command”命令,此方式可以直接登录vm,但是不能操作主机文件
docker-machine ssh <machine> "<command>"  
# 跨机器拷贝,windows下需要git bash等linux terminal
docker-machine scp <file> <machine>:~  
# 将环境变量配置到shell的方式打印出来,执行最后的提示语之后,vm会变成active
docekr-machine env <machineName>    
# 重置env的配置
eval $(docker-machine env -u)  
# 启动
docker-machine start <machine-name>   

Dockerfile


# Use an official Python runtime as a parent image
FROM python:2.7-slim

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

# Define environment variable
ENV NAME World  
# change proxy  
ENV http_proxy host:port
ENV https_proxy host:port

# Run app.py when the container launches
CMD ["python", "app.py"]

requirements.txt

Flask
Redis

app.py

from flask import Flask
from redis import Redis, RedisError
import os
import socket

# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(__name__)

@app.route("/")
def hello():
    try:
        visits = redis.incr("counter")
    except RedisError:
        visits = "<i>cannot connect to Redis, counter disabled</i>"

    html = "<h3>Hello {name}!</h3>" \
           "<b>Hostname:</b> {hostname}<br/>" \
           "<b>Visits:</b> {visits}"
    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

docker-compose.yml

version: "3"
services:
  web:
    # replace username/repo:tag with your name and image details
    image: username/repo:tag
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "4000:80"
    networks:
      - webnet  

  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
      networks:
        - webnet
  redis:
    image: redis
    ports:
      - "6379:6379"
    volumes:
      - "/home/docker/data:/data"
    deploy:
      placement:
        constraints: [node.role == manager]
      command: redis-server --appendonly yes
      networks:
        - webnet  
networks:
  webnet:

猜你喜欢

转载自blog.csdn.net/u013867301/article/details/83963584