一、官方文档安装Docker CE:
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 确认删除Docker相关
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
#更新相关工具
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
#增加docker仓库
sudo yum install docker-ce docker-ce-cli containerd.io
#安装docker-ce
二、使用镜像:
1.搜索镜像
docker search [镜像名]
比如:
docker search ubuntu
2.下载镜像:
docker pull [选项] [Docker Registry地址]<仓库名>:<标签>
#不给出 Docker Registry地址的话就是使用Docker官方的Docker Hub
不给出用户名使用默认的library,也就是官方镜像
###配置国内镜像加速源(使用DaoCloud镜像加速器):
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
#详细文档 https://www.daocloud.io/mirror。只用于虚拟机,物理机。在云上使用有各自云上的镜像加速器,详细访问所属云的文档
3.查看镜像
docker images
额外概念:虚悬镜像(dangling image),中间层镜像 -a选项显示所有镜像
列出部分镜像:
docker images ubuntu #根据镜像名列出镜像,也可使用仓库名加标签
使用过滤器参数 --filter 或简写 -f
docker images -f since=ubuntu #列出在Ubuntu之后建立的镜像。before=ubuntu可以看到Ubuntu之前建立的镜像
label= #使用标签列出镜像
使用特定格式显示
docker images -q #仅显示镜像的ID,配合--filter寻找无用镜像ID方便删除
docker images --format "{{.ID}}:{{.Repository}}"
c582c1438f27: fedora
cd6d8154f1e1: ubuntu
#引号里的string用Go的模板语法
4.运行容器(比喻:镜像是python里的类,容器是pythonl里的实例):
docker run
比如:
docker run -it --rm ubuntu:14.04 [command]
-it 交互操作,发起终端
--rm 容器退出后将其删除。因为一般容器退出并不会删除除非手动删除
docker run -d -p 91:80 nginx
-d 后台运行
-p 映射端口
四种映射方式:
ip:hostPort:containerPort
ip:containerPort
hostPort:containerPort
containerPort
进入容器nginx的linux
1、docker exec -it [ContainerID] /bin/bash
2、查看容器的PID:
docker inspect --format "{{.State.Pid}}" mynginx
5.停止容器
docker stop [ContainerID]
6.删除容器
docker rm [ContainerID]
停止所有容器:docker stop $(docker ps -a -q)
删除所有容器:docker rm $(docker ps -a -q)
三、docker数据管理:
1、数据卷
-v /data src:dst
$sudo docker run -it --name volume-test1 -h lee -v /data centos
切换到另一个ssh上 $sudo docker inspect --format "{{.Config.Volumes}}" volume-test1可以查看data位置(查看为空
map[/data:{}])则使用$sudo docker inspect volume-test1 | grep Mounts -A 10
指定映射目录(文件):
docker run -it --name volume-test2 -h volume-test2 -v /opt:/opt centos(-v参数和-p格式差不多)
2.数据卷容器(将容器目录挂载到另一个容器)
--volumes-from
$sudo docker run -it --name volume-test3 --volume-from volume-test1 centos
####在Docker运行容器后,有时我们需要再次进入容器进行操作时,那就有以下几种方式了:
以下方法需要知道容器ID,首先需要
docker ps #在结果中找到你需要进入的容器的ID
1.使用docker attach进入容器
docker attach container_id #进入该id的容器
2.使用docker exec进入容器(这个选项是在在docker1.3版本之后加入的)
docker exec -it container_id /bin/bash #进入该id的容器
3.使用nsenter命令进入容器,需要先安装nsenter()
4.SSH进入容器(不推荐)
为什么不推荐使用ssh进入容器呢?
三、搭建服务
docker搭建WordPress:
docker run --name db --env MYSQL_ROOT_PASSWORD='123456' -d mariadb
docker run --name mywordpress --link db:mysql -p 8080:80 -d wordpress
docker搭建gitlab:
1.安装postgresql:
docker run --name gitlab-postgresql -d \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' --env 'DB_PASS=password' \
sameersbn/postgresql:9.4-12
2.安装redis:
docker run --name gitlab-redis -d sameersbn/redis:latest
3.安装gitlab:
docker run --name gitlab -d \
--link gitlab-postgresql:postgresql --link gitlab-redis:redisio \
--publish 10022:22 --publish 10080:80 \
--env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \
--env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \
sameersbn/gitlab:8.4.4