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
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'