Docker 笔记 - Docker官网
一,环境搭建
1 win 10 搭建 vagrant + virtualbox
1.1 下载工具
1.2 准备 centos7 box
1.3 搭建 centos7 环境
1.3.1 新建一个文件夹用于初始化 vagrant
注:目录不能包含中文
1.3.2 添加 .box 文件到 vagrant
$ vagrant box add centos/7 E:/Docker/virtualbox.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos/7' (v0) for provider:
box: Unpacking necessary files from: file:///E:/Docker/virtualbox.box
box:
==> box: Successfully added box 'centos/7' (v0) for 'virtualbox'!
AQQJE@aqqje MINGW64 /e/Docker
$ vagrant box list
centos/7 (virtualbox, 0)
1.3.3 生成 Vagrantfile 文件
$ vagrant init centos/7
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
1.3.4 配置 Vagrantfile 文件
# -*- mode: ruby -*-# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.network "public_network"
config.vm.provider "virtualbox" do |vb|
vb.memory = "3000"
vb.name = "aqqje"
vb.cpus = 3
endend
1.3.5 启动 centos/7 虚拟机
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
...
==> default: Rsyncing folder: /cygdrive/e/Docker/ => /vagrant
1.3.6 vagrant基本操作
vagrant ssh # 连接当前 vagrant 运行的虚拟机
vagrant status # 查看当前 vagrant 运行的虚拟机
vagrant halt # 停止当前 vagrant 运行的虚拟机
vagrant destroy # 删除当前 vagrant 创建的虚拟机
vagrant reload # 重启当前 vagrant 运行的虚拟机
vagrant ssh-config # 查看当前 vagrant ssh配置信息
##### 1.3.7 配置虚拟 ssh 连接
```bash
# 开启ssh密码连接
vim /etc/ssh/sshd_config
# 设置 passwordAuthentication yes
PasswordAuthentication yes
```bash
[vagrant@localhost ~]$ sudo -i
[root@localhost ~]# vi /etc/ssh/sshd_config
[root@localhost ~]# passwd
Changing password for user root.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# systemctl restart sshd
[root@localhost ~]# ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:8a:fe:e6 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0
valid_lft 85626sec preferred_lft 85626sec
inet6 fe80::5054:ff:fe8a:fee6/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:6b:95:30 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.172/24 brd 192.168.0.255 scope global noprefixroute dynamic eth1
valid_lft 6426sec preferred_lft 6426sec
inet6 fe80::a00:27ff:fe6b:9530/64 scope link
valid_lft forever preferred_lft forever
1.3.8 vagrant box 打包分发
$ vagrant package --output sub-centos.box
==> default: Exporting VM...
==> default: Compressing package to: E:/Docker/sub-centos.box
1.3.9 从 vagrant 中移除 .box 文件
$ vagrant box remove centos/7
Removing box 'centos/7' (v0) with provider 'virtualbox'...
AQQJE@aqqje MINGW64 /e/Docker
$ vagrant box list
There are no installed boxes! Use `vagrant box add` to add some.
2 使用云服务器
二, 安装Docker - 官网文档
1. 卸载之前的 docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2. 安装依赖
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
3. 配置 docker 仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
4. 安装 docker
# 默认安装最新版本
sudo yum install docker-ce docker-ce-cli containerd.io
# 查看 docker 历史版本
sudo yum list docker-ce --showduplicates | sort -r
# 安装指定版本: 18.09.1
sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
5. 启动 docker, 并配置开机启动
sudo systemctl start docker && sudo systemctl enable docker
6. 配置加速器 - 阿里镜像加速服务
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
7. hello world
sudo docker run hello-world
8. docker 基础命令
# 搜索镜像: mysql
docker search mysql
# 安装 mysql
docker pull mysql
# 查看本地镜像
docker images
# 启动镜像: -d 容器在后台运行 -p 容器内部使用的网络端口映射到宿主主机上
docker run -d --name mysql02 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --privileged mysql
# 进入镜像窗口: -i 交互式操作 -t 终端 (docker attach 命令:如果从这个容器退出,会导致容器的停止)
docker exec -it mysql02 /bin/bash
三, Docker Image and Container
1,Image - 官方 image 地址
1.1 使用官方 Dockerfile 文件构建 mysql
- Dockerfile
FROM debian:stretch-slim
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added