เขียนโดย ดร.จักรกฤษณ์ แสงแก้ว วันที่ 5 ธันวาคม 2561
$ sudo apt-get install docker.io $ sudo usermod -aG docker $USER
การติดตั้งสำหรับวินโดวส์ ดาวน์โหลด docker 17.03.1 ปล. หากติดปัญหาศึกษาจากลิงค์นี้
docker run it --rm -v /local-disk-path/root:/root # เมื่อรัน container จะลบไดเร็คทอรี่ root ในคอนเทนเนอร์ออกไปและจะแม็พ /local-disk-path/root เข้าไปแทน root ในคอนเทนเนอร์ # ทำให้ข้อมูลต่าง ๆ จะเก็บในไดเร็คทอรี่ /local-disk-path/root และข้อมูลจะไม่หายเมื่อรันคอนเทนเนอร์ใหม่อีกครั้ง
$ docker commit [หมายเลขคอนเทนเนอร์] [ชื่อคอนเทนเนอร์] $ docker save [ชื่อคอนเทนเนอร์] > ชื่อไฟล์.tar $ docker load -i ชื่อไฟล์.tar
» รูปแบบคำสั่ง docker tag [เลขแท็ก] [ชื่อใหม่] » ตรวจสอบหมายเลขแท็กด้วยคำสั่ง $ docker images » ตัวอย่าง docker tag 4271a45fbea3 openpose
$ docker rm $(docker ps -aq)
ในกรณีที่มีคอนเทนเนอร์ทำงานอยู่เบื้องหลัง สามารถส่งพารามิเตอร์ kill เพื่อไปทำลายโปรเซสให้หยุดลงได้ เช่น $docker ps -aq # แสดงรายชื่อ container session $ docker kill [เลข session ที่ต้องการให้ยุติการทำงาน] $ docker rm $(docker ps -aq) # คือการลบ session ที่ค้าง อยู่ทิ้งไป
$ docker rmi -f [หมายเลขคอนเทนเนอร์]
$ docker run --privileged -p 9000:9000 -p 80:80 -it --device /dev/video0:/dev/video0 --net=host -v /media/learning/2TB/face-recognition/:/web - แชร์เน็ต (--net =host) - แชร์กล้อง (--device /dev/video0:/dev/video0) - แชร์ไฟล์ (-v /hostpath:/containerpath) - แชร์พอร์ต (-p 9000:9000) - ให้มีเชลล์รับคำสั่ง (-it)
$ docker exec -it [หมายเลขคอนเทนเนอร์] bash
$ docker network create -d macvlan -o macvlan_mode=bridge --subnet=202.28.34.0/24 --gateway=202.28.34.222 -o parent=eth0 macvlan_bridge $ docker run --name cont1 --net=macvlan_bridge --ip=202.28.34.200 --mac-address 00:50:56:00:60:42 -it nginx bash หรือ $ docker run --net=macvlan_bridge --ip=202.28.34.200 --mac-address 00:50:56:00:60:42 -it nginx bash
$ sudo apt-get purge nvidia* $ sudo add-apt-repository ppa:graphics-drivers/ppa $ sudo apt update $ sudo apt install nvidia-390 $ lsmod | grep nvidia install nvidia-modprobe before install nvidia-docker $ sudo apt-get install nvidia-modprobe $ sudo apt-get install nvidia-docker หมายเหตุ : อย่าเรียกคำสั่งนี้ เพราะมันเอาเวอร์ชั่น 304.135 มาลงให้ แย่มาก !! sudo apt-get install nvidia-current ตรวจเคอเนลเวอร์ชั่น $ uname -a เช็คเจอ eGPU มั้ย ? $ cat /sys/bus/thunderbolt/devices/0-1/device_name อนุญาตให้ eGPU ใช้งานได้ $ sh -c "echo 1 > /sys/bus/thunderbolt/devices/0-1/authorized" ตรวจสอบว่าเจอ eGPU $ lspci | grep NVIDIA ใช้ riser จะแสดงรายการ lspci ดังนี้ $ lspci -nn | grep "NVIDIA" 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:1c20] (rev a1) 05:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:1b06] (rev a1) 05:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:10ef] (rev a1) ไม่ใช้ riser (การ์ดจอ 1060 ในเครื่องโน๊ตบุ๊ค) จะแสดงดังนี้ 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:1c20] (rev a1) ต่อมาลองใส่ m2 riser กลับเข้าไปและพบว่า lspci จะไม่เห็น nvidia ที่ใส่เข้าไป.. (งง ปัญหามาจากแหล่งจ่ายไฟไม่พอเลี้ยงการ์ด nvidia) $ lspci 00:00.0 Host bridge: Intel Corporation Device 5910 (rev 05) 00:01.0 PCI bridge: Intel Corporation Sky Lake PCIe Controller (x16) (rev 05) 00:02.0 VGA compatible controller: Intel Corporation Device 591b (rev 04) 00:14.0 USB controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller (rev 31) 00:14.2 Signal processing controller: Intel Corporation Sunrise Point-H Thermal subsystem (rev 31) 00:16.0 Communication controller: Intel Corporation Sunrise Point-H CSME HECI #1 (rev 31) 00:17.0 SATA controller: Intel Corporation Sunrise Point-H SATA Controller [AHCI mode] (rev 31) 00:1c.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #1 (rev f1) 00:1c.3 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #4 (rev f1) 00:1c.4 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #5 (rev f1) 00:1d.0 PCI bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #9 (rev f1) 00:1f.0 ISA bridge: Intel Corporation Sunrise Point-H LPC Controller (rev 31) 00:1f.2 Memory controller: Intel Corporation Sunrise Point-H PMC (rev 31) 00:1f.3 Audio device: Intel Corporation Device a171 (rev 31) 00:1f.4 SMBus: Intel Corporation Sunrise Point-H SMBus (rev 31) 01:00.0 VGA compatible controller: NVIDIA Corporation Device 1c20 (rev a1) 02:00.0 Network controller: Intel Corporation Device 24fb (rev 10) 03:00.0 Ethernet controller: Qualcomm Atheros Killer E2400 Gigabit Ethernet Controller (rev 10) 04:00.0 USB controller: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller 05:00.0 VGA compatible controller: NVIDIA Corporation Device 1b06 (rev a1) 05:00.1 Audio device: NVIDIA Corporation Device 10ef (rev a1)
1. เปิด power shell หรือ cmd (ด้วยสิทธิ์ administrator) 2. เรียกคำสั่งต่อไปนี้ cd "C:\Program Files\Docker\Docker" DockerCli.exe -SwitchDaemon
ข้อความปัญหา : error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.35/info: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running ที่ console ให้เรียกคำสั่งต่อไปนี้ด้วยสิทธิ์ของ administrator จากนั้น reboot dism /Online /Enable-Feature:Microsoft-Hyper-V /All หลังจากนั้นตรวจสอบการทำงานด้วยคำสั่ง docker version ปล. หากทำงานได้สมบูรณ์จะไม่มีแสดงข้อความผิดพลาด ถ้ายังมีข้อผิดพลาดให้รันคำสั่งต่อไปนี้ bcdedit /set hypervisorlaunchtype auto
สร้างเน็ตเวอร์ดังนี้
# eth0 New-VMSwitch -SwitchName "NAT" -SwitchType Internal # eth1 New-VMSwitch -SwitchName "VLAN" -SwitchType Internal - เปิด Hyper V -> Setting NIC -> เลือก Enable MAC Address sproofing - ติดตั้ง VirtNet เป็น network interface https://www.ntkernel.com/virtnet/ ดาวน์โหลด https://www.ntkernel.com/downloads/VirtNet.zip
1. เปิด command line ด้วยสิทธิ์ admin (คลิ๊กขวา cmd -> run as administrator) และพิมพ์คำสั่ง dism /online /enable-feature /featurename:Microsoft-Hyper-V -All 2. restart 3. เปิด command line ด้วยสิทธิ์ admin (คลิ๊กขวา cmd -> run as administrator) และพิมพ์คำสั่ง bcdedit /set hypervisorlaunchtype auto 4. ที่ด้านล่างขวาด้านล่าง (systray) เลือก docker -> switch to linux containers หรือ windows containers ตามต้องการ ปล. ในตัวอย่างนี้ใช้กับ hyperv ไม่มีการติดตั้ง virtual box
» โหลด container : docker pull newdeveloper/apache-php » รัน docker run --net=host -it newdeveloper/apache-php bash » เขียนไฟล์ index.php ใน container เช่น /home/index.php » รัน php ด้วยคำสั่ง php -S เลขไอพีของโฮสคอมพิวเตอร์:8083
» เนื่องจากใช้ --net=host ดังนั้น พอร์ตต่าง ๆ จะถูกแม็พไปยังเครื่องโฮสคอมพิวเตอร์ » ในคอนเทนเนอร์รัน php ด้วยเลขไอพีของโฮสคอมพิวเตอร์และใช้พอร์ต 8083
$ sudo apt-get install vsftpd » แก้ไข sudo vim /etc/vsftpd.conf » เปลี่ยน anonymous_enable=NO » เอาคอมเมนต์ออก xferlog_file=/var/log/vsftpd.log » เอาคอมเมนต์ออก ftpd_banner และใส่ข้อความต้อนรับตามต้องการ $ sudo service vsftpd restart » ทดสอบ telnet ที่พอร์ต 21 ดังนี้ $ sudo telnel localhost 21 » เพิ่มผู้ใช้ sudo adduser ftp1user » ผู้ใช้งานดาวน์โหลด https://filezilla-project.org/
https://msazure.club/docker-macvlan-demystify/
» Ubuntu 20.04 » CUDA 10.2 » Docker Latest
1. update sudo apt update && sudo apt -y upgrade sudo apt install -y build-essential
2. ติดตั้ง cuda wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub sudo apt update sudo apt -y install cuda-drivers sudo systemctl set-default multi-user.target sudo reboot
3. ติดตั้ง docker sudo apt -y install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt update sudo apt -y install docker-ce docker-ce-cli containerd.io sudo usermod -aG docker $USER sudo reboot
4. ติดตั้ง nvidia distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt update && sudo apt -y install nvidia-container-toolkit sudo systemctl restart docker docker run --gpus all --pid host nvidia/cuda:10.2-runtime nvidia-smi
$ sudo apt-get install vsftpd » 1. สร้าง network $ docker network create -d macvlan -o macvlan_mode=bridge --subnet=202.28.34.0/24 --gateway=202.28.34.222 -o parent=eth0 macvlan_bridge $ docker run --name cont1 --net=macvlan_bridge --ip=202.28.34.200 --mac-address 00:50:56:00:60:42 -it nginx bash หรือ $ docker run --net=macvlan_bridge --ip=202.28.34.200 --mac-address 00:50:56:00:60:42 -it nginx bash