Docker基本命令


https://ebkn7ykm.mirror.aliyuncs.com",
”https://docker.mirrors.ustc.edu.cn“,
”http://f1361db2.m.daocloud.io“,
”https://registry.docker-cn.com"
]

首次启动镜像


docker run -d --name busybox-first busybox
-d 代表后台运行容器

docker run -it --name busybox-test busybox sh

参数说明:

  • -i: 交互式操作。
  • -t: 终端。
  • -p:端口。
  • -ip:指定IP。
  • -v:数据卷。例如:-v /data:/data:ro。ro为容器只读。
  • –volumes-from:数据卷来自于已有的容器。
  • -name:容器名。
  • busybox 镜像。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

启动已存在容器


docker start <容器 ID/Name>
docker restart 容器id1 [容器id2] [...]  #重启

运行的docker容器列表


docker ps # 查看正在运行的容器列表
docker ps –a # 所有容器列表(包含存活和退出容器)

停止容器

docker stop <容器 ID/Name>

进入容器

docker exec -it 容器ID/容器别名称 /bin/bash

从这个容器退出,不会导致容器的停止,推荐大家使用

查看容器的某些进程PID


doker top name

删除容器

docker rm name

镜像列表

docker images

启动所有容器

docker start $(docker ps -a -q)

复制文件到容器

docker cp sentinel.conf redis-master:/usr/local/redis

创建容器时指定IP

Docker创建容器时默认采用bridge网络,自行分配ip,不允许自己指定。

在实际部署中,我们需要指定容器ip,不允许其自行分配ip,尤其是搭建集群时,固定ip是必须的。

我们可以创建自己的bridge网络 : mynet,创建容器的时候指定网络为mynet并指定ip即可。

查看网络模式

docker network ls

创建一个新的bridge网络

docker network create --driver bridge --subnet=172.19.0.0/16 --gateway=172.19.0.1 dockercompose

查看网络信息

docker network inspect dockercompose

创建容器并指定容器ip

docker run -it --name nginx-second --network=dockercompose --ip 172.19.0.6 nginx
# 验证是否固定
docker insepect 容器ID | grep "IpAddress"
"SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.19.0.6",

创建快照

查看现有容器
docker ps/docker ps -a
创建容器快照
docker export ID > test.tar
导入并验证
cat dd.tar | docker import - test1:latest

docker run -it ID(镜像) /bin/bash

---------------- 运行报错 ------------------
docker run 有问题

查看数据卷相关信息

docker inspect -f {{.Volumes}} 容器名

构建容器(nginx为例)

一、手动构建

1、拉取镜像
docker pull centos
2、启动镜像
docker run --name nginx-man -it centos
3、安装相关依赖包
yum install -y wget gcc gcc-c++ make openssl-devel
4、安装nginx依赖

wget http://nginx.org/download/nginx-1.9.3.tar.gz
mv nginx-1.9.3.tar.gz /usr/local/data/nginx-1.9.3.tar.gz
cd /usr/local/data
5、解压
tar -zxf nginx-1.9.3.tar.gz
6、创建www用户
useradd -s /sbin/nologin -M www
7、启动nginx
./configure --prefix=/usr/local/data/nginx --user=www --group=www --with-http_ssl_moudle --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.37
8、make

make
make install
9、配置启动容器直接运行nginx

vi /usr/local/data/nginx/conf/nginx.conf
#添加,让其在前台运行
daemon off;
10、验证

exit#退出容器
docker commit -m "my nginx" 容器ID my-nginx1:vl
doker images
#发现已经有了新镜像
docker run -it -p 92:80 my-nginx1:v1 /usr/local/data/nginx/sbin/nginx
#可以循环添加想要的容器数量
在浏览器打开IP:92
可以看到nginx
11、容器自启
docker container update --restart=always 容器名

附录:

Gitlab安装


docker pull twang2218/gitlab-ce-zh

version: '3'
services:
   web:
     image: 'twang2218/gitlab-ce-zh'   #gitlab镜像
     restart: always
     privileged: true  #权限
     hostname: '192.168.3.249'       #主机名,即虚拟机的ip
     environment:
        TZ: 'Asia/Shanghai'
        GITLAB_OMNIBUS_CONFIG: |
            external_url 'http://192.168.3.249' #主机名,即虚拟机的ip
            gitlab_rails['gitlab_shell_ssh_port'] = 2222
            unicorn['port'] = 8888
            nginx['listen_port'] = 8084
     ports:
        - '8084:8084'
        - '8443:443'
        - '2222:22'
     volumes:
        - './config:/etc/gitlab'
        - './logs:/var/log/gitlab'
        - './data:/var/opt/gitlab'