admin管理员组

文章数量:1530085

Docker

1 Outline

Container vs Virtual Machine
virtual machine: 带 environment 安装的一种解决方案。virtual machine 大,笨重,慢。 Container 和 virtual machine 不同,dont need to bind 捆绑 一整套 Operation System。

三核心: 容器 仓库 镜像
1 image:java class; 2 container: new instance; 3 repo: store images

image 文件可以看作是 container 的 template, 同一个 image file, 可以生成多个同时 run 的 container instance.

docker 拿 Linux 系统借鸡生蛋,所以必须安在 Linux 上

Docker 本身是 container run 的载体或者说 management engine。

Docker is a Client-Server structure system. Docker daemon running on host, we access through Socket connection client. daemon receive command and manage containers who running at host. Container, is a runtime environment , that is “集装箱”。 我在这台机子上跑的 SQL Statement 换台机子的 mysql 上一样跑。这台的 image 给另一台也一样。

可以把 container 看作是一个简易的 linux environment( includes root user privilege, process space, user space, network space etc.) and application programs running in it.

2 install


On Official site:



yum-config-manager --add-repo http://mirrors.aliyun/docker-ce/linux/centos/docker-ce.repo

如果你复制官网的库,不自己配国内镜像,会不停地出现:


DOCKER CE (DOCKER Engine)


Official site:



2.1 阿里云镜像加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://95t3vicv.mirror.aliyuncs"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Why Docker is faster than Virtual Machine?

centos iso, 软件硬件甚至包括打印机驱动!用得到的用不到的全得加载。出行给我汽车就行了,虽然火车牛逼。。。而 docker 和宿主机 host 共用一个 OS 内核 core.


念起即断,念起即觉

docker 虚悬镜像是什么?无头冤案

3 Command

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG…]

🎈 第一次启动某 container:

docker run -[OPTIONS],  //常用OPTION:--name   -i  -t  -d    -P  -p

🎈 第二次启动某 container:

docker start mysql0  , docker restart mysql0

对于某些人docker无法run成功mysql容器的,可以在命令中加–privilege=true

🎈 Show containers just running now:

docker ps 

🎈 Show all containers:

docker ps -a

🎈 Remove container:

docker rm -f   //就算你在吃饭,我也要把你饭桌给掀了

note:

docker run -d redis

容易启动失败, 因为这样做,redis 为 deamon process pattern 运行,就导致 docker 前台没有运行的应用,这样的 container 在后台启动后会立即自杀,因为他觉得他没事可做了。

🎈 Check log:

docker logs [CONTAINER ID]

🎈 进入某 container 内部 (means 重新进 container 并调出 interactive terminal):

docker exec -it CONTAINER-ID bashShell
docker exec -it CONTAINER-ID /bin/bash

docker attch CONTAINER-ID  # 会人走拆庙  

🎈 钻出 contianer:

exit

🎈 把重要文件从 container copy to 主机

docker cp ddblae909a66:/tmp/a.txt /zzyyuse

🎈 把整个 container copy…

cat abcd.tar | docker import-atguigu/ubuntu:3.7

4 IMAGE

UnionFileSystem

docker image layer is READONLY, only container layer is writable.


5 Container Data Volume

 docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录      镜像名

相当于快捷方式.


6 install tomcat mysql…

mysql 中文乱码问题: note: 改 myf 并重启,之前,created 的 db 全都无效!要在新建的 db 里写, 不然写中文还是会 报 错。 因为当时的 db 这个值还是 latin

本文标签: Dockeressential