docker 安装配置 常用命令

ubuntu 安装

更新 apt 包索引。

 sudo apt-get update

安装 apt 依赖包,用于通过HTTPS来获取仓库:

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

添加 Docker 的官方 GPG 密钥:

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

使用以下指令设置稳定版仓库

 sudo add-apt-repository \
   "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
  $(lsb_release -cs) \
  stable"

更新 apt 包索引。

sudo apt-get update
sudo apt-get install docker-ce

可能默认安装最新版会确实依赖库,导致安装失败,可以指定docker版本就不会失败,查询本地缓存源支持的列表,然后指定版本安装
查看自己能安装的版本

apt-cache madison docker-ce
 sudo apt-get install docker-ce=<VERSION_STRING> 

docker timeout 解决办法.

配置代理,此处为阿里云的镜像,可选其他的.

{
  "registry-mirrors": [
    "https://khec465u.mirror.aliyuncs.com" 
  ]
}

使用 python 镜像

在 ~/python/myapp 目录下创建一个 helloworld.py 文件,代码如下:

#!/usr/bin/python

print("Hello, World!");

运行容器

runoob@runoob:~/python$ docker run  -v $PWD/myapp:/usr/src/myapp  -w /usr/src/myapp python:3.5 python helloworld.py

命令说明:

-v $PWD/myapp:/usr/src/myapp: 将主机中当前目录下的 myapp 挂载到容器的 /usr/src/myapp。

-w /usr/src/myapp: 指定容器的 /usr/src/myapp 目录为工作目录。

python helloworld.py: 使用容器的 python 命令来执行工作目录中的 helloworld.py 文件。

输出结果:

Hello, World!

使用php镜像

在 ~/php_project 目录下创建一个 helloworld. 文件,代码如下:

<?
echo "hello world";

运行容器

 
docker run -v $PWD/php_project:/usr/src/myapp -w /usr/src/myapp php:5.6-fpm php helloworld.php

命令说明:

-v $PWD/myapp:/usr/src/myapp: 将主机中当前目录下的 myapp 挂载到容器的 /usr/src/myapp。

-w /usr/src/myapp: 指定容器的 /usr/src/myapp 目录为工作目录。

php helloworld.php: 使用容器的 php 命令来执行工作目录中的 helloworld.php 文件。

输出结果:

hello world

常用命令

停用并删除所有容器

docker stop $(docker ps -q) && docker rm $(docker ps -aq)

启动容器例子
模板:docker run 参数… 镜像名:版本号 命令

docker run -it --name mygorpc -v /Users/mac/golangStudy:/go/golangStudy grpc/go:latest /bin/bash

-i 交互
-t 终端
-d 后台运行
–name 容器命名
-v 宿主机的目录映射到容器机里面的目录

查看所有容器

docker ps -a

启动已经存在的容器

docker start 容器名或者容器id

进入已经启动的容器
docker exec -it 容器名或者容器id bash

docker exec -it mygorpc bash

run 和start和exec的区别
1.docker run
docker run只有在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器的时候,只需要使用命令docker start就可以。
docker run相当于执行了两步操作:将镜像(Image)放到容器(Container)中,这一步过程叫做docker create,然后将容器启动,使之变成运行时容器(docker start)。
命令模板是:docker run 参数 镜像名
2.docker start
docker start的作用是:重新启动已经存在的容器。也就是说,如果使用这个命令,我们必须先要知道这个容器的ID、或者这个容器的名字,我们可以使用docker ps命令找到这个容器的信息。
命令模板是:docker run 参数 容器名
3.exec 是进入已经存在的容器

命令模板是:docker exec 参数 容器名

Dockerfile

Dockerfile是为了构建镜像
例子

FROM nginx:latest
USER nginx
EXPOSE 80
ADD index.html /usr/share/nginx/html/index.html
WORKDIR /usr/share/www
ENV myenv 99999
RUN mkdir  /usr/share/nginx/html/dir2
RUN yum  install -y  vim    # 容器构建时需要运行的命令
CMD echo "Hello world"

FROM 拉取的镜像源
USER 容器里的用户名,以这个用户名登录
WORKDIR 类似cd到某目录,进入容器后就在此目录
EXPOSE 是暴露端口,不怎么好用,和-P配合使用,-P是随机生成宿主机和容器的映射
ENV 给镜像写环境变量
RUN 是镜像构建的时候跑的命令,比如安装vim
CMD 是容器启动是执行的命令
CMD看到的效果是 docker run -it -P --name centos_v8 centos/centos:v8
意思是如果不指定centos/centos:v8后面执行的命令,会默认执行CMD的命令
后面没有带bash,则容器在run时会自动执行Dockerfile的CMD指令,从而输出Hello world
一个Dockerfile中只能有一条CMD指令。如果你列出一个以上的CMD,那么只有最后一个CMD会生效。

ENTRYPOINT和CMD的区别,ENTYPOINT会把原CMD的内容作为参数
ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数

参考: https://www.cnblogs.com/reachos/p/8609025.html
https://www.cnblogs.com/hao-ran/p/11529619.html

构建镜像

docker build . -t nginx/nginx:v2
构建只会是镜像的构建,不涉及容器

自己的docker命令操作记录汇总

docker rm -f nginx_v2 && docker run -it -P --name nginx_v2 nginx/nginx:v2 bash

docker build . -t nginx/nginx:v2
docker exec -itd nginx_v2 nginx

docker build . -t centos/centos:v8
docker rm -f centos_v8 && docker run -it -P --name centos_v8 centos/centos:v8 bash

推荐文章

Dockerfile文件详解
在这里插入图片描述

docker-compose 使用

删除容器

docker-compose down

启动容器

docker-compose up -d

在docker-comose.yml目录执行的哦
docker-comose.yml 模板

version: '3'
services: 
  stark-tools:
    container_name: test-tools
    image: my/test-tools:3.0
    ports:
      - "2345:2345"
      - "10013:10013"
      - "55098:55098"
      - "55879:55879"
      - "56249:56249"
      - "58942:58942"
      - "56935:56935"

    volumes:
      - ~/go/pkg:/go/pkg
      - D:\go_project\src:/go/src
    restart: always
    stdin_open: true
    tty: true
#    entrypoint: ["ls", "-la", "/root/.ssh/id_rsa"]
    command:
      - /bin/bash
      - -c
      - |
        mkdir test333
        sh
    environment:
      - GOPATH=/go
      - GO_ENV=dev

    
      - APOLLO_META_SERVER_URL=http://119.23.207.60:8080
      - ETCDV3_SERVER_URLS=http://139.196.98.138:2379
  php-grpc-gen:
    container_name: php-grpc-gen
    image: chrisdowson/php-grpc-gen:1.30.0
    volumes:
      - D:\go_project\src:/go/src
    restart: always
    stdin_open: true
    tty: true
    # 初始化go环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值