因为apt官方库里的docker版本可能比较旧,因此先卸载可能存在的旧版本 sudo apt-get remove docker docker-engine docker-ce docker.io 更新apt包索引 sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common 添加Docker官方的GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update 安装最新版本的Docker CE sudo apt-get install -y docker-ce 验证 sudo service docker status sudo docker run hello-world
也叫作Docker镜像,镜像通常是只读模版,用户不能够直接对其进行写入操做。使用镜像能够很轻松地建立容器。 镜像目的也就是更好的保证数据的安全。html
也叫作Docker容器,容器与容器之间互相隔离、互不干扰,容器能够进行被开始、启动、中止、删除等操做。linux
开发者能够快速地把本身的应用打包到容器中进行发布。nginx
也叫作Docker仓库,主要是用来下载和上传镜像的,仓库分为公有仓库和私有仓库。git
看吧!web
docker exec -it 容器ID/名字 /bin/bashredis
这时 top 命令看到的只有当前容器运行的程序;进入容器后,能够进行操做等。docker
exit 退出ubuntu
运行中:docker ps安全
全部:docker ps -abash
docker images
docker rm ID
删除全部容器
docker rm $(docker ps -a -q)
须要先删除容器
docker rmi (-f) ID
docker pull 用户名/镜像名
docker run -d \ --name nginx_container \ -p 80:80 \ -v /data:/data \ --restart=always \ nginx
中止全部容器
docker stop $(docker ps -a -q)
首先编写Dockerfile文件,而后用docker build来构建镜像
docker build -t my_own_nginx:v1 .
docker tag my_own_nginx:v1 nginx:socv1
docker logs -f container_id
docker image rm -f $(docker image ls -q)
pip3 install docker-compose docker-compose --version
-f
参数。 image是指定服务的镜像名称或镜像ID。若是镜像在本地不存在,Compose将会尝试拉取镜像。
version: '3.7' services: icp: image: harbor.socmap.org/bs-icp/icp:v0.0.3
构建镜像,指定一个Dockerfile文件路径
version: '3.7' services: icp: build: context: ./services/icp dockerfile: Dockerfile
映射一个目录。格式:宿主机:容器内
例如:容器运行,须要存取验证码图片,映射容器路径/usr/src/app/project/captcha
到宿主机/home/workspace/files/captcha
,容器内,凡是使用前者保存的图片都会存储到后者目录。
version: '3.7' services: icp: volumes: - '/home/workspace/files/captcha:/usr/src/app/project/captcha'
用于映射端口。
version: '3.7' services: icp: ports: - 5033:5000
暴露端口给link到当前容器的容器。不会将端口暴露给宿主机。
例如:将端口8887暴露给link到本容器的容器
version: '3.7' services: icp: expose: - 8887
一个专门存放变量的文件。若是有变量名称与environment指令冲突,则之后者为准。
version: '3.7' services: icp: env_file: - name.env
添加环境变量。
version: '3.7' services: icp: environment: - FLASK_ENV=development
重启容器。默认为 no
version: '3.7' services: icp: restart: always
配置网段。
version: '3.7' services: icp: networks: - defnet networks: defnet: ipam: driver: default config: - subnet: "172.68.0.0/16"
解决容器服务间相互依赖、启动顺序的问题。
例如:下面容器会先启动 redis 和 db 两个服务,再启动 icp 服务
version: '3.7' services: icp: depends_on: - db - redis redis: image: redis db: image: postgres
解决的是容器间链接问题。容器间能够经过名称相互访问
例如:web 容器须要使用到 db 容器的 postgres 服务,web 容器以别名 database 为 hostname访问 db 服务
version: '3.7' services: web: links: - db:database db: image: postgres
覆盖容器启动后默认执行的命令。
version: '3.7' services: celery: command: celery -A app.celer.base worker -l info
-d
后台启动-f
指定 docker-compose 文件--build
重构镜像docker-compose up
docker-compose up -d
docker-compose -f docker-compose-dev.yml up -d –build
docker-compose -f docker-compose-deploy.yml pull
1,登陆
docker login -u username -p password
2, 本地构建镜像,镜像名要与dockerhub仓库名相同,默认使用.目录
下的Dockerfile文件
docker build -t username/blog:v0.0.1 .
3, 推送到dockerhub
docker push username/blog:v0.0.1