Jalankan gambar Docker sebagai wadah


604

Saya membuat gambar Docker dari dockerfile. Saya melihat gambar berhasil dibangun, tetapi apa yang harus saya lakukan dengannya? Bukankah seharusnya bisa berjalan sebagai wadah?

Jawaban:


855

Cara spesifik untuk menjalankannya tergantung pada apakah Anda memberi tag / nama atau tidak.

$ docker images
REPOSITORY          TAG                 ID                  CREATED             SIZE
ubuntu              12.04               8dbd9e392a96        4 months ago        131.5 MB (virtual 131.5 MB)

Dengan sebuah nama (mari kita gunakan Ubuntu ):

$ docker run -i -t ubuntu:12.04 /bin/bash

Tanpa nama, cukup gunakan ID:

$ docker run -i -t 8dbd9e392a96 /bin/bash

Silakan lihat referensi run Docker untuk informasi lebih lanjut.


4
Jadi nama yang ramah manusia yang dicetak di bawah 'NAME' docker ps -atidak berguna di sini?
ThorSummoner

11
docker psdaftar kontainer, bukan gambar. Jika Anda ingin membuat gambar dari sebuah wadah, Anda harus docker commit. Anda dapat menggunakan NAME di komit (mis. docker commit _NAME_ _imagename_)
Andy

8
@Andy Mengapa kita menggunakan / bin / bash di akhir? Saya juga baru
Raheel

6
@RaheelKhan Karena gambar buruh pelabuhan Anda perlu dijalankan. Anda bisa menggantinya dengan program yang telah Anda instal. / bin / bash hanyalah shell berguna yang sudah diinstal.
Ryan Shillington

Jika Anda perlu menambahkan variabel lingkungan, Anda dapat melakukan docker run -i -t -e ROOT_PASSWORD = root ubuntu: 12.04
Balaji Radhakrishnan

70

Lakukan langkah-langkah berikut:

  1. $ docker images

    Anda akan mendapatkan daftar semua gambar Docker lokal dengan tag yang ditentukan.

  2. $ docker run image_name:tag_name

    Jika Anda tidak menentukannya tag_nameakan secara otomatis menjalankan gambar dengan tag 'terbaru'.

    Alih-alih image_name, Anda juga dapat menentukan ID gambar (tanpa tag_name).


35
  • Untuk membuat daftar gambar Docker

    $ docker images
    
  • Jika aplikasi Anda ingin dijalankan dengan port 80, dan Anda dapat mengekspos port lain untuk mengikat secara lokal, katakanlah 8080:

    $ docker run -d --restart=always -p 8080:80 image_name:version
    

21

Anda dapat melihat gambar yang tersedia menggunakan:

docker images

Kemudian Anda dapat menjalankan dalam mode terpisah sehingga terminal Anda masih dapat digunakan. Anda memiliki beberapa opsi untuk menjalankannya menggunakan nama repositori (dengan atau tanpa tag) atau ID gambar:

docker run -d repository
docker run -d repository:tag
docker run -d image_id

Kemudian Anda dapat memeriksa wadah Anda sedang berjalan menggunakan

docker ps

docker psmemberi Anda ID kontainer. Anda dapat menggunakannya atau hanya 2/3 karakter pertama untuk masuk ke wadah Anda menggunakan:

docker exec -it container_id /bin/bash

Dan Anda dapat menghentikannya menggunakan docker stop container_iddan docker rm container_id.

Anda juga dapat menjalankan wadah Anda dengan -rmargumen sehingga jika Anda menghentikan wadah Anda itu akan dihapus secara otomatis.


1
Opsi --rm (note: 2 strip tidak single) adalah emas !!!, sistem saya dikotori dengan kontainer yang sudah berhenti (mati).
Johan Snowgoose

13

Dapatkan nama atau id dari gambar yang ingin Anda jalankan, dengan perintah ini:

docker images

Perintah run Docker digunakan dengan cara berikut:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Di bawah ini saya telah menyertakan opsi pengiriman, nama, publikasi, volume dan mulai ulang sebelum menentukan nama gambar atau id:

docker run -d --name  container-name -p localhost:80:80 -v $HOME/myContainer/configDir:/myImage/configDir --restart=always image-name

Dimana:

--detach , -d        Run container in background and print container ID
--name                Assign a name to the container
--publish , -p        Publish a container’s port(s) to the host
--volume , -v        Bind mount a volume
--restart            Restart policy to apply when a container exits

Untuk informasi lebih lanjut, silakan lihat referensi run Docker resmi .


5

Berikut adalah contoh untuk menjalankan layanan webdev di Docker. Nama gambar adalah morrisjobke / webdav . Anda dapat menariknya dari Docker Hub .

Setelah Anda menjalankan gambar ini, Anda kemudian dapat mengakses contoh WebDAV di http://localhost:8888/webdav. Secara internal folder /var/webdavtersebut digunakan sebagai root WebDAV.

Anda dapat menjalankan wadah ini dengan cara berikut:

$ docker run -d -e USERNAME=test -e PASSWORD=test -p 8888:80 morrisjobke/webdav

Re "jalankan layanan webdev" : Maksud Anda "menjalankan layanan WebDAV" ? Atau "jalankan layanan pengembangan web" ?
Peter Mortensen

5

Saya memiliki masalah yang sama. Saya menjalankan gambar Docker saya, dan itu menciptakan sebuah wadah dengan CONTAINER_ID tertentu. Saya ingin bekerja dengan wadah yang sama:

Pertama jalankan gambar Docker Anda:

docker run -it -p 8888:8888 -p 6006:6006 -v ~/:/host waleedka/modern-deep-learning

Kemudian daftarkan semua wadah yang telah Anda buat:

sudo docker ps -a

Dan pilih wadah yang ingin Anda kerjakan (milik saya adalah 167ddd6d7f15):

sudo docker start -ai 167ddd6d7f15

4

Karena Anda telah membuat gambar dari Dockerfile, gambar saat ini tidak dalam keadaan aktif. Agar berfungsi, Anda perlu menjalankan gambar ini di dalam sebuah wadah.

The $ docker imagesperintah menjelaskan berapa banyak gambar yang saat ini tersedia di repositori lokal. dan

docker ps -a

menunjukkan berapa banyak wadah yang saat ini tersedia, yaitu daftar wadah yang aktif dan keluar.

Ada dua cara untuk menjalankan gambar dalam wadah:

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

Dalam mode terpisah:

-d=false: Detached mode: Run container in the background, print new container id

Dalam mode interaktif:

-i :Keep STDIN open even if not attached

Berikut adalah perintah jalankan Docker

$ docker run image_name:tag_name

Untuk klarifikasi lebih lanjut tentang proses Docker, Anda dapat mengunjungi referensi proses Docker .

Ini bahan terbaik untuk memahami Docker.


2

Untuk melihat daftar semua gambar di host Docker Anda, jalankan:

  $ docker images
   REPOSITORY          TAG           IMAGE ID            CREATED             SIZE
   apache_snapshot     latest        13037686eac3        22 seconds ago      249MB
   ubuntu              latest        00fd29ccc6f1        3 weeks ago         111MB

Sekarang Anda dapat menjalankan gambar Docker sebagai wadah dalam mode interaktif:

   $ docker run -it apache_snapshot /bin/bash

ATAU jika Anda tidak memiliki gambar secara lokal, Cari Docker Hub untuk mengunduh gambar:

    $ docker search ubuntu
    NAME                            DESCRIPTION             STARS  OFFICIAL  AUTOMATED
    ubuntu                          Ubuntu is a Debian...   6759   [OK]       
    dorowu/ubuntu-desktop-lxde-vnc  Ubuntu with openss...   141              [OK]
    rastasheep/ubuntu-sshd          Dockerized SSH ser...   114              [OK]
    ansible/ubuntu14.04-ansible     Ubuntu 14.04 LTS w...   88               [OK]
    ubuntu-upstart                  Upstart is an even...   80     [OK]

Tarik gambar Docker dari repositori dengan perintah docker pull:

     $ docker pull ubuntu

Jalankan gambar Docker sebagai wadah:

     $ docker run -it ubuntu /bin/bash

0
$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED            
jamesmedice/marketplace   latest              e78c49b5f380        2 days ago          
jamesmedice/marketplace   v1.0.0              *e78c49b5f380*        2 days ago          


$ docker run -p 6001:8585 *e78c49b5f380*

1
Penjelasan akan diurutkan.
Peter Mortensen

-1

Bagi mereka yang memiliki masalah yang sama juga, tetapi mengalami kesalahan seperti

rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"bash\": executable file not found in $PATH"

Saya menambahkan titik masuk yang berfungsi untuk saya:

docker run -it --entrypoint /bin/sh untuk gambar tanpa Bash.

Contoh (dari contoh yang disetujui):

run -it --entrypoint /bin/sh ubuntu:12.04

Referensi: https://gist.github.com/mitchwongho/11266726

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.