Dev Environment Fedora 28
กำหนดการของการ release fedora 28
2018-04-03 Beta Release (Target #1)
2018-04-17 Final Freeze (*)
2018-05-01 Fedora 28 Final Release (GA) (Preferred Target)
2018-05-08 Fedora 28 Final Release (GA) (Target #1)
ติดตั้ง Dev Environment สำหรับ Fedora 28 วางแผนการใช้งาน Vagrant บน Linux libvirt ไม่ใช่ผ่านทาง Virtualbox มีขั้นตอนดังนี้
1) ติดตั้ง package ที่จำเป็น และ ต้องมีการ enable vt-x ใน Bios ก่อน
1 2 3 4 5 6 7 8 9 10 11 12 |
$ egrep '^flags.*(vmx|svm)' /proc/cpuinfo $ sudo su - $ sudo dnf groupinfo virtualization $ sudo dnf -y install qemu-kvm libvirt virt-install bridge-utils $ sudo lsmod | grep kvm kvm_intel 176128 0 kvm 708608 1 kvm_intel irqbypass 16384 1 kvm # systemctl start libvirtd # systemctl enable libvirtd |
2) install Virt-manager เพื่อใช้เป็น gui
1 2 3 4 5 |
$ sudo dnf install virt-manager $ sudo gpasswd -a "${USER}" libvirt Adding user <yourusername> to group libvirt $ virt-manager |
default network libvirt จะใช้ network ชื่อ virbr0 192.168.122.0/24
1 2 3 4 5 |
$ ip a s virbr0 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:a2:61:e8 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever |
3 ต่อมาให้ติดตั้ง vagrant plugin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
$ sudo dnf install ruby ruby-devel $ vagrant plugin install vagrant-libvirt (add centos 7 box) $ vagrant box add centos/7 1) hyperv 2) libvirt (<--- เลือก box สำหรับ libvirt) 3) virtualbox 4) vmware_desktop Enter your choice: 2 ==> box: Adding box 'centos/7' (v1802.01) for provider: libvirt box: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/1802.01/providers/libvirt.box (downloading box... กรุณารอซักครู) (เมื่อ Download เสร็จสิ้นจะได้ผลดังนี้) ==> box: Successfully added box 'centos/7' (v1802.01) for 'libvirt'! $ mkdir VagrantProj $ cd VagrantProj $ mkdir centos7 $ cd centos7 $ vagrant init centos/7 $ cat Vagrantfile |
file Vagrantfile ที่ปรับเปลี่ยนตามความต้องการ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.network "forwarded_port", guest: 8000, host: 8000, host_ip: "127.0.0.1" config.vm.network "private_network", ip: "192.168.33.10" config.vm.provider "virtualbox" do |vb| vb.memory = "1024" end config.vm.provision "shell", inline: <<-SHELL yum update -y SHELL end |
เริ่มต้น boot image
1 |
$ vagrant up --provider=libvirt |
หากต้องการใช้งาน image อื่นสามารถไปค้นหาได้ที่ http://www.vagrantbox.es/ และ https://app.vagrantup.com/boxes/search
4 Connect ไปยัง box
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
$ brctl showmacs virbr0 port no mac addr is local? ageing timer 1 52:54:00:a2:61:e8 yes 0.00 1 52:54:00:a2:61:e8 yes 0.00 $ vagrant ssh [vagrant@localhost ~]$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 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 qlen 1000 link/ether 52:54:00:02:e4:88 brd ff:ff:ff:ff:ff:ff inet 192.168.121.75/24 brd 192.168.121.255 scope global dynamic eth0 valid_lft 3461sec preferred_lft 3461sec inet6 fe80::5054:ff:fe02:e488/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:da:d4:fb brd ff:ff:ff:ff:ff:ff inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:feda:d4fb/64 scope link valid_lft forever preferred_lft forever [vagrant@localhost ~]$ ip r default via 192.168.121.1 dev eth0 proto static metric 100 192.168.33.0/24 dev eth1 proto kernel scope link src 192.168.33.10 metric 100 192.168.121.0/24 dev eth0 proto kernel scope link src 192.168.121.75 metric 100 |
5 ติดตั้ง Docker ใน vm ที่สร้างจาก Vagrant
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 (stable) $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo (edge) $ sudo yum-config-manager --enable docker-ce-edge (test) $ sudo yum-config-manager --enable docker-ce-test $ sudo yum install docker-ce -y $ sudo systemctl start docker $ sudo systemctl enable docker $ sudo gpasswd -a "${USER}" docker Adding user vagrant to group docker (verify) $ sudo docker run hello-world Hello from Docker! $ sudo docker run -it ubuntu bash $ root@f83f2305840a:/# root@f83f2305840a:/# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS" $ reboot |
6 ทดสอบ Django
– สร้าง directory ว่างๆ
– สร้าง Dockerfile
1 2 3 |
mkdir django cd django vi Dockerfile |
สร้าง Dockerfile
1 2 3 4 5 6 7 |
FROM python:3 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code/ |
สร้าง requirements.txt
1 2 3 |
vi requirements.txt Django psycopg2 |
สร้าง docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
version: '3' services: db: image: postgres web: build: . command: python3 manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db |
install docker-compose
1 2 3 4 5 6 7 8 9 |
$ sudo curl -L https://github.com/docker/compose/releases/download/1.20.1/docker-compose-`uname -s`-`uname -m` \ -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose $ vi ~/.bash_profile PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/local/bin/ $ sudo docker-compose run web django-admin.py startproject composeexample . ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running? |